Importing Databases

Lando ships with a helper db-import script that is available in all our LAMP and LEMP based recipes. Used in the recipe context it should import a database dump into the recipe-provided database by default but can be used on additional database services as well.

You can also import databases into other hosts and databases. It will currently handle uncompressed, gzipped or zipped dump files.

This command will wipe out the target database before it runs the import unless you use the --no-wipe flag!

Usage

lando db-import somedumpfile.sql.gz

Prefer video tutorials?

DB dump must reside within app directory

Due to restrictions in how Docker handles file sharing your database dump MUST exist somewhere inside of your app directory. This means that IT IS A VERY GOOD IDEA to make sure you add SQL dumps to your .gitignore file.

Examples

# Import a file into the recipe-provided db
lando db-import dump.sql

# Import a file into an auxiliary second database called 'db2'
# with a db called `dataz`
lando db-import dump.zip --host db2

# Import without destroying the target database
lando db-import dump.zip --no-wipe

# Pipe stdout into db-import
# NOTE: this is a bit finicky right now
cat dump.sql | lando db-import

Options

Options:
  --host, -h      The database service to use                  [default: "database"]
  --no-wipe       Do not destroy the existing database before an import

Adding the db-import command

If you are not using one of our php-y recipes you can add the db-import command and default options to your .lando.yml as follows.

# The name of the app
name: sql-import

# Give me http://mysql-import.lndo.site and https://mysql-import.lndo.site
proxy:
  nginx:
    - sql-import.lndo.site

# Set up my services
services:

  # Set up a basic webserver running the latest nginx with ssl turned on
  appserver:
    via: nginx
    type: php:7.1
    ssl: true
    webroot: www

  # Spin up a mariadb container called "database"
  # NOTE: "database" is arbitrary, you could just as well call this "db" or "kanye"
  database:

    # Use the latest version of mysql
    type: mysql

    # Optionally forward out our port so we can access it at `localhost:someport`.
    # This port will change every time you restart this app
    #
    # You can also set this to a static port you want to use `portforward:3311`.
    # You will need to make sure the port is open and avialable
    portforward: 5309

    # Optionally change the default db credentials
    creds:
      user: mysql
      password: mysql
      database: data1

  # Spin up a secondary database for postgres
  database2:
    type: postgres

tooling:
  mysql:
    service: :host
    description: Drop into a mysql shell on a database service
    cmd: mysql -u root
    options:
      host:
        description: The database service to use
        default: database
        alias:
          - h
  psql:
    service: :host
    description: Drop into a postgres shell on a database service
    cmd: psql -h localhost -p 5432 -U postgres
    options:
      host:
        description: The database service to use
        default: database2
        alias:
          - h
  'db-import ':
    service: :host
    description: Import  into database
    cmd: /helpers/sql-import.sh
    options:
      host:
        description: The database service to use
        default: database
        alias:
          - h
      no-wipe:
        description: Do not destroy the existing database before an import

You will need to rebuild your app with lando rebuild to apply the changes to this file. You can check out the full code for this example over here.

results matching ""

    No results matching ""