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

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

我有一个Windows Server 2008 R2安装。 我将.sql文件放在C盘上,然后我尝试了这个命令

 database_name < file.sql 

它不工作我得到语法错误。

  • 我怎样才能导入这个文件没有问题?
  • 我需要先创build一个数据库吗?

尝试:

 mysql -u username -p database_name < file.sql 

检查MySQL选项 。

注意:最好使用SQL文件file.sql的完整path。

mysqldump的常见用法是对整个数据库进行备份:

 shell> mysqldump db_name > backup-file.sql 

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

UNIX

 shell> mysql db_name < backup-file.sql 

Windows命令提示符下也是一样的:

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

电源shell

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

MySQL命令行

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

关于导入大文件所花费的时间:最重要的是,由于MySQL的默认设置是autocommit = true ,所以需要更多的时间。 在导入文件之前,您必须先将其设置为off,然后检查import如何像gem一样工作。

你只需要做以下事情:

 mysql> use db_name; mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ; 
  1. 打开MySQL命令行
  2. input mysql bin目录的path,然后按Enter键
  3. 将你的SQL文件粘贴到mysql服务器的bin文件夹中。
  4. 在MySQL中创build一个数据库。
  5. 在要导入SQL文件的位置使用该特定的数据库。
  6. input source databasefilename.sqlEnter
  7. 您的SQL文件成功上传。

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

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

例如,如果用户名是root ,密码是password 。 你有一个数据库名称为bank和SQL文件是bank.sql 。 然后,只需要这样做:

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

记住你的SQL文件的位置。 如果您的SQL文件位于Desktop文件夹/目录中,则进入桌面目录并input如下所示的命令:

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

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

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

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

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

为我工作的解决scheme如下:

 Use your_database_name; SOURCE path_to_db_sql_file_on_your_local; 

转到您拥有MySQL可执行文件的目录。 -u用户名和-p提示input密码:

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

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

 mysqldump -u username -p database_name > database_name.sql 

要将SQL文件导入数据库(确保与SQL文件位于同一目录中,或提供文件的完整path)

 mysql u -username -p database_name < database_name.sql 

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

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

对于多个数据库转储,请使用以下命令。

 mysql -u username -p password < dump.sql 

如果您已经有数据库使用以下来导入dumpsql文件

 mysql -u username -p database_name < file.sql 

如果你不需要在MySQL中创build相关的数据库(空),那么首先在terminal或cmd中运行以下命令login到MySQL控制台

 mysql -u userName -p; 

并在提示时提供密码。

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

 mysql>create database yourDatabaseName; mysql>use yourDatabaseName; 

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

 mysql> source pathToYourSQLFile; 

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

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

我认为值得一提的是,你也可以像下面显示的那样用zcat加载一个gzipped(压缩)文件:

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

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

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

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

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

为了简单导入:

 #Unix Based solution mysql -u root -pPassword DataBase < data.sql 

对于WAMP :

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

为Xamppp

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

添加--force选项 :

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

我认为这对于那些使用Mac OS X的人可能是有用的:

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

mamp或其他Web服务器replacexampp

以下命令适用于WAMP上Windows 7的命令行(cmd)。

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

导入一个数据库

  1. 去驱动器:

     command: d: 
  2. MySQLlogin

     command: c:\xampp\mysql\bin\mysql -u root -p 
  3. 它会要求密码。 input:

     pwd 
  4. select数据库

     use DbName; 
  5. 提供文件名称

     \.DbName.sql 

转到你有MySQL的目录。

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

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

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

或者你也可以使用一些像SQLyog这样的GUI客户端来做到这一点。

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

 @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 

有关信息,我只是默认的根+没有密码,它不适用于所有以上的答案。

  • 我创build了一个拥有所有权限和密码的新用户。 有用。

  • -password无空格。

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

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

我一直在遇到没有创build数据库的问题。

我这样解决

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

我正在使用Windows 10与Powershell 5,我发现几乎所有“unix-like”解决scheme都不适合我。

 > 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 

我最终使用这个命令。

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

它完美的工作,希望它可以帮助。

感谢@ Francesco Casula的答案 。

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

步骤1:将file.sql.zip上传到任何目录并在其中解压缩
注意sudo apt-get install unzipsudo apt-get unzip file.sql.zip
第2步:现在导航到该目录。 例如: cd /var/www/html

第3步: mysql -u username -p database-name < file.sql
input密码并等待上传完成。

如果你的文件夹有多个SQL文件,并且你已经安装了Git Bash,你可以使用这个命令来导入多个文件:

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

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

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

其中etc / myhost.cnf是一个包含主机,用户,密码的文件,您可以避免在命令行上显示密码。 这里是一个示例,

 [client] host=hostname.domainname user=dbusername password=dbpassword 

https://stackoverflow.com/a/17666285/1888983类似;
对我来说重要的区别:

  1. 数据库必须先存在
  2. -p和密码之间没有空格

 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。

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

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

MYSQL_USER默认为root。