如何使用MySQL中的命令行导入SQL文件?

How to import an SQL file using the command line in MySQL?

我有一个.sql文件,从phpMyAdmin导出。我想使用命令行将其导入其他服务器。

我安装了Windows Server 2008 R2。我把.sql文件放在c驱动器上,并尝试了这个命令

1
database_name < file.sql

它不起作用了,我有语法错误。

  • 如何导入此文件而不出现问题?
  • 是否需要先创建数据库?


尝试:

1
mysql -u username -p database_name < file.sql

检查mysql选项。

注1:最好使用SQL文件EDOCX1的完整路径(0)。

注2:使用-R--triggers保留原数据库的例程和触发器。默认情况下不会复制它们。

注3:如果(空)数据库不存在,并且导出的SQL不包含CREATE DATABASE(使用--no-create-db-n选项导出),则可能需要从mysql中创建(空)数据库才能导入。


mysqldump通常用于备份整个数据库:

1
shell> mysqldump db_name > backup-file.sql

您可以这样将转储文件加载回服务器:

UNIX

1
shell> mysql db_name < backup-file.sql

在Windows命令提示中相同:

1
mysql -p -u [user] [database] < backup-file.sql

动力壳

1
C:\> cmd.exe /c"mysql -u root -p db_name < backup-file.sql"

mysql命令行

1
2
mysql> use db_name;
mysql> source backup-file.sql;


关于导入大文件所花费的时间:最重要的是,mysql的默认设置是autocommit = true,所以需要更多的时间。在导入文件之前,您必须设置该选项,然后检查导入是如何像宝石一样工作的。

您只需执行以下操作:

1
2
3
mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;


在所有答案中,对于上述问题,这是最好的答案:

1
2
 mysql> use db_name;
 mysql> source file_name.sql;


我们可以使用此命令从命令行导入SQL:

1
mysql -u username -p password db_name < file.sql

例如,如果用户名是root,密码是password。数据库名为bank,SQL文件为bank.sql。然后,简单地这样做:

1
mysql -u root -p password bank < bank.sql

记住您的SQL文件在哪里。如果您的SQL文件在Desktop文件夹/目录中,则转到桌面目录并输入如下命令:

1
2
~ ? cd Desktop
~/Desktop ? mysql -u root -p password bank < bank.sql

如果您在Project目录中,而您的SQL文件在Desktop目录中。如果您想从Project目录访问它,那么可以这样做:

1
~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql


  • 打开mysql命令行
  • 键入mysql bin目录的路径,然后按enter
  • 将您的SQL文件粘贴到mysql server的bin文件夹中。
  • 在MySQL中创建数据库。
  • 使用要导入SQL文件的特定数据库。
  • source databasefilename.sqlenter
  • 您的SQL文件上载成功。

  • 如果数据库已经存在,请使用以下命令导入dumpsql文件

    1
    mysql -u username -p database_name < file.sql

    如果您不需要在mysql中创建相关的数据库(空),那么为了第一次登录到MySQL控制台,可以在终端或cmd中运行以下命令

    1
    mysql -u userName -p;

    提示时提供密码。

    接下来创建一个数据库并使用它

    1
    2
    mysql>create database yourDatabaseName;
    mysql>use yourDatabaseName;

    然后将sqldump文件从导入数据库

    1
    mysql> source pathToYourSQLFile;

    注意:如果您的终端不在dumpsql文件所在的位置,请使用上面的相对路径。


    对我有效的解决方案如下:

    1
    2
    Use your_database_name;
    SOURCE path_to_db_sql_file_on_your_local;


    转到mysql可执行文件所在的目录。-u表示用户名,-p表示提示输入密码:

    1
    C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql


    要导入单个数据库,请使用以下命令。

    1
    mysql -u username -p password dbname < dump.sql

    要导入多个数据库转储,请使用以下命令。

    1
    mysql -u username -p password < dump.sql


    要将数据库转储到SQL文件中,请使用以下命令

    1
    mysqldump -u username -p database_name > database_name.sql

    将SQL文件导入数据库(确保您与SQL文件在同一目录中,或提供文件的完整路径)

    1
    mysql -u username -p database_name < database_name.sql

    我认为值得一提的是,您还可以使用zcat加载gzip(压缩)文件,如下所示:

    1
    zcat database_file.sql.gz | mysql -u username -p -h localhost database_name

    导入架构的最简单方法:

    登录mysql并发布下面提到的命令。

    1
    2
    3
    mysql> use your_db_name;

    mysql> source /opt/file.sql;


    1
    mysql --user=[user] --password=[password] [database] < news_ml_all.sql


    要同时导入多个SQL文件,请使用以下命令:

    1
    2
    # Unix-based solution
    for i in *.sql;do mysql -u root -pPassword DataBase < $i;done

    对于简单导入:

    1
    2
    # Unix-based solution
    mysql -u root -pPassword DataBase < data.sql

    对于WAMP:

    1
    2
    #mysqlVersion replace with your own version
    C:\wamp\bin\mysql\mysqlVersion\bin\mysql.exe -u root -pPassword DataBase < data.sql

    XAMPP:

    1
    C:\xampp\mysql\bin\mysql -u root -pPassword DataBase < data.sql

    如果.sql文件包含CREATE DATABASE IF NOT EXISTS db_nameUSE db_name语句,则不需要在命令行上指定数据库的名称。

    如果.sql文件中提到的数据库不存在,请确保您正在与具有创建数据库权限的用户连接。


    导入数据库

  • 开车去:

    1
    command: d:
  • MySQL登录

    1
    command: c:\xampp\mysql\bin\mysql -u root -p
  • 它需要密码。输入:

    1
    pwd
  • 选择数据库

    1
    use DbName;
  • 提供文件名

    1
    \.DbName.sql

  • 增加--force选项:

    1
    mysql -u username -p database_name --force < file.sql

    1
    mysql -u root -p password -D database_name << import.sql

    使用mysql帮助获取详细信息mysql --help

    我认为在我们的背景下,这些将是有用的选择

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    [~]$ mysql --help
    mysql  Ver 14.14 Distrib 5.7.20, for osx10.12 (x86_64) using  EditLine wrapper
    Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.                                                                                                                                        
    Usage: mysql [OPTIONS] [database]
      -?, --help          Display this help and exit.
      -I, --help          Synonym for -?
      --bind-address=name IP address to bind to.
      -D, --database=name Database to use.
      --delimiter=name    Delimiter to be used.
      --default-character-set=name Set the default character set.
      -f, --force         Continue even if we get an SQL error.
      -p, --password[=name] Password to use when connecting to server.
      -h, --host=name     Connect to host.
      -P, --port=#        Port number to use for connection or 0 for default to, in order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default (3306).
      --protocol=name     The protocol to use for connection (tcp, socket, pipe,
      -s, --silent        Be more silent. Print results with a tab as separator, each row on new line.
      -v, --verbose       Write more. (-v -v -v gives the table output format).
      -V, --version       Output version information and exit.
      -w, --wait          Wait and retry if connection is down.

    如果我们要导入一个大型数据库,而没有进度条,那么有什么有趣的呢?使用管道查看器并通过管道查看数据传输

    对于Mac,brew install pv。.对于Debian/Ubuntu,apt-get install pv。其他,请参阅http://www.ivarch.com/programs/pv.shtml。

    1
    2
    3
    4
    5
    pv import.sql | mysql -u root -p password -D database_name

    1.45GiB 1:50:07 [339.0KiB/s]   [=============>      ] 14% ETA 11:09:36
    1.46GiB 1:50:14 [ 246KiB/s]     [=============>      ] 14% ETA 11:09:15
    1.47GiB 1:53:00 [ 385KiB/s]     [=============>      ] 14% ETA 11:05:36


    转到mysql所在的目录。

    1
    2
     c:\mysql\bin\> mysql -u username -p password database_name <
     filename.sql

    另外,要转储所有数据库,请使用-all-databases选项,并且不再需要指定数据库的名称。

    1
    mysqldump -u username -ppassword –all-databases > dump.sql

    或者您可以使用一些GUI客户机(如sqlyog)来执行此操作。


    以下命令在上的命令行(cmd)中对我有效Wamp上的Windows 7。

    1
    d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql

    我认为它可能对那些使用Mac OS X的用户有用:

    1
    /Applications/xampp/xamppfiles/bin/mysql -u root -p database < database.sql

    xampp替换为mamp或其他Web服务器。


    这里的大多数答案只提到简单的命令

    mysql -u database_user -p [db_name] < database_file.sql

    今天,数据库和表具有utf8排序规则是很常见的,而这个命令还不够。在导出的表中使用utf8排序规则时,需要使用以下命令:

    mysql -u database_user -p --default-character-set=utf8 [db_name] < database_file.sql

    Surley这也适用于其他字符集,这里可以看到如何显示正确的符号:

    https://dev.mysql.com/doc/refman/5.7/en/show-collation.html

    一条注释还提到,如果数据库从未存在,则必须首先创建一个空数据库。这在某些情况下可能是正确的,但取决于导出文件。如果导出的文件已经包含创建数据库的命令,那么就不必在单独的步骤中创建数据库,这甚至可能导致导入时出错。因此,在导入时,最好先查看文件以了解其中包含哪些命令;在导出时,最好注意设置,尤其是当文件非常大并且在编辑器中难以读取时。

    这里列出并解释了命令的更多参数:

    https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html

    如果您使用另一个数据库版本,请考虑搜索相应版本的手册。上面提到的链接是指MySQL5.7版本。


    出于备份目的,请生成一个BAT文件,并使用任务计划程序运行此BAT文件。它将备份数据库;只需复制以下行并粘贴到记事本中,然后保存.bat文件,然后在系统上运行它。

    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    for /f"tokens=1" %%i in ('date /t') do set DATE_DOW=%%i
    for /f"tokens=2" %%i in ('date /t') do set DATE_DAY=%%i
    for /f %%i in ('echo %date_day:/=-%') do set DATE_DAY=%%i
    for /f %%i in ('time /t') do set DATE_TIME=%%i
    for /f %%i in ('echo %date_time::=-%') do set DATE_TIME=%%i

    "C:\Program Files\MySQL\mysql server 5.5\bin\mysqldump" -u username -ppassword mysql>C:/%DATE_DAY%_%DATE_TIME%_database.sql


    在命令行上提供凭据不是一个好主意。以上答案很好,但忽略了

    1
    mysql --defaults-extra-file=etc/myhost.cnf database_name < file.sql

    其中,etc/myhost.cnf是一个包含主机、用户、密码的文件,您可以避免在命令行上暴露密码。这是一个样品,

    1
    2
    3
    4
    [client]
    host=hostname.domainname
    user=dbusername
    password=dbpassword


    有时定义的端口以及该数据库的服务器IP地址也很重要…

    1
    mysql -u user -p user -h <Server IP> -P<port> (DBNAME) < DB.sql

    我一直遇到一个没有创建数据库的问题。

    我是这样修的

    1
    2
    mysql -u root -e"CREATE DATABASE db_name"
    mysql db_name --force < import_script.sql

    类似于https://stackoverflow.com/a/17666285/1888983
    我的主要区别:

  • 数据库必须首先存在
  • -p和密码之间没有空格
  • 1
    2
    3
    4
    shell> mysql -u root -ppassword #note: no space between -p and password
    mysql> CREATE DATABASE databasename;
    mysql> using databasename;
    mysql> source /path/to/backup.sql

    与Mariadb一起经营Fedora 26。


    我将Windows10与PowerShell5结合使用,发现几乎所有"类Unix"解决方案都不适合我。

    1
    2
    3
    4
    5
    6
    7
    > mysql -u[username] [database-name] < my-database.sql
    At line:1 char:31
    + mysql -u[username] [database-name] < my-database.sql
    +                               ~
    The '<' operator is reserved for future use.
        + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
        + FullyQualifiedErrorId : RedirectionNotSupported

    我最终使用了这个命令。

    1
    > type my-database.sql | mysql -u[username] -h[localhost] -p [database-name]

    它工作得很好,希望能有所帮助。

    感谢@francesco casula的回答。


    关于我刚刚使用的默认根+和outpassword的信息,它不适用于以上所有的答案。

    • 我创建了一个拥有所有特权和密码的新用户。它起作用了。

    • -ppassword没有空格。


    以下步骤有助于将file.sql上载到mysql数据库。

    第一步:上传file.sql.zip到任意目录,解压注:sudo apt-get install unzip。:sudo apt-get unzip file.sql.zip。步骤2:现在导航到该目录。示例:cd /var/www/html

    第三步:mysql -u username -p database-name < file.sql。输入密码并等待上载完成。


    导入数据库:

    mysql -u username -p database_name < /file path/file_name.sql

    从数据库导出:

    mysqldump -u username -p database_name > /file path/file_name.sql

    在这些命令之后,提示将询问您的MySQL密码


    您可以尝试此查询。

    出口:

    1
    mysqldump -u username –-password=your_password database_name > file.sql

    进口:

    1
    mysql -u username –-password=your_password database_name < file.sql

    以及以下链接的详细信息:

    https://chartio.com/resources/tutorials/importing-from-and-exporting-to-files-using-the-mysql-command-line/


    如果将数据导入Docker容器,请使用以下命令。调整用户(-u)、数据库(-d)、端口(-p)和主机(-h)以适合您的配置。

    1
    mysql -u root -D database_name -P 4406 -h localhost --protocol=tcp -p < sample_dump.sql


    如果您在Mac OS X上使用MAMP,这可能会有所帮助:

    1
    /applications/MAMP/library/bin/mysql -u MYSQL_USER -p DATABASE_NAME < path/to/database_sql/FILE.sql

    mysql_用户默认为根用户。


    导出特定数据库:

    1
     djimi:> mysqldump --user=root --host=localhost --port=3306 --password=test -B CCR KIT > ccr_kit_local.sql

    这将导出CCR和KIT数据库…

    将所有导出的数据库导入到特定的MySQL实例(必须是转储文件所在的位置):

    1
      djimi:> mysql --user=root --host=localhost --port=3306 --password=test < ccr_kit_local.sql

    例如

    我在C:\xampp\mysql\bin上安装了软件我的档案在C:\Users\file.sql号地址。

    刚刚设置了usernamedatabase_name

    注:首先,您需要手动创建数据库(database_name)

    运行此命令:

    cd C:\xampp\mysql\bin && mysql -u username -p database_name < C:\Users\file.sql

    然后输入密码??


    在Windows中,可以使用下面的命令从SQL转储导入数据

    c:program filesmysqlmysql server 5.7in>mysql-u<>-p<>dbname

    其中-u后跟用户名,-p后跟mysql密码。在命令中可以跳过密码,因为可以在提示时输入密码。


    你可以使用:

    1
    mysql -u<user> -p<pass> <db> < db.sql

    例子:

    1
    mysql -uroot -proot db < db.sql

    再见!


    如果文件夹中有多个SQL文件,并且安装了Git Bash,则可以使用此命令导入多个文件:

    1
    2
    3
    cd /my-project/data

    cat *.sql | /c/xampp/mysql/bin/mysql -u root -p 1234 myProjectDbName

    如果要导入到本地数据库服务器,可以执行以下操作:

    1
    mysql -u database_user -p < database_file.sql

    对于远程数据库服务器,请执行以下操作:

    1
    mysql -u database_user -p -h remote_server_url < database_file.sql