class DbImportCommand

Same name in other branches
  1. 9 core/lib/Drupal/Core/Command/DbImportCommand.php \Drupal\Core\Command\DbImportCommand
  2. 8.9.x core/lib/Drupal/Core/Command/DbImportCommand.php \Drupal\Core\Command\DbImportCommand
  3. 11.x core/lib/Drupal/Core/Command/DbImportCommand.php \Drupal\Core\Command\DbImportCommand

Provides a command to import the current database from a script.

This script runs on databases exported using one of the database dump commands and imports it into the current database connection.

Hierarchy

  • class \Drupal\Core\Command\DbCommandBase extends \Symfony\Component\Console\Command\Command
    • class \Drupal\Core\Command\DbImportCommand extends \Drupal\Core\Command\DbCommandBase

Expanded class hierarchy of DbImportCommand

See also

\Drupal\Core\Command\DbImportApplication

1 file declares its use of DbImportCommand
DbImportCommandTest.php in core/modules/system/tests/src/Kernel/Scripts/DbImportCommandTest.php

File

core/lib/Drupal/Core/Command/DbImportCommand.php, line 20

Namespace

Drupal\Core\Command
View source
class DbImportCommand extends DbCommandBase {
    
    /**
     * {@inheritdoc}
     */
    protected function configure() {
        parent::configure();
        $this->setName('import')
            ->setDescription('Import database from a generation script.')
            ->addArgument('script', InputOption::VALUE_REQUIRED, 'Import script');
    }
    
    /**
     * {@inheritdoc}
     */
    protected function execute(InputInterface $input, OutputInterface $output) : int {
        $script = $input->getArgument('script');
        if (!is_file($script)) {
            $output->writeln('File must exist.');
            return 1;
        }
        $connection = $this->getDatabaseConnection($input);
        $this->runScript($connection, $script);
        $output->writeln('Import completed successfully.');
        return 0;
    }
    
    /**
     * Run the database script.
     *
     * @param \Drupal\Core\Database\Connection $connection
     *   Connection used by the script when included.
     * @param string $script
     *   Path to dump script.
     */
    protected function runScript(Connection $connection, $script) {
        $old_key = Database::setActiveConnection($connection->getKey());
        if (str_ends_with($script, '.gz')) {
            $script = "compress.zlib://{$script}";
        }
        try {
            require $script;
        } catch (SchemaObjectExistsException $e) {
            throw new \RuntimeException('An existing Drupal installation exists at this location. Try removing all tables or changing the database prefix in your settings.php file.');
        }
        Database::setActiveConnection($old_key);
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
DbCommandBase::getDatabaseConnection protected function Parse input options decide on a database. 1
DbImportCommand::configure protected function phpcs:ignore Drupal.Commenting.FunctionComment.VoidReturn Overrides DbCommandBase::configure
DbImportCommand::execute protected function
DbImportCommand::runScript protected function Run the database script.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.