如何在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 ;
- 打开MySQL命令行
- input mysql bin目录的path,然后按Enter键
- 将你的SQL文件粘贴到mysql服务器的
bin
文件夹中。 - 在MySQL中创build一个数据库。
- 在要导入SQL文件的位置使用该特定的数据库。
- input
source databasefilename.sql
和Enter - 您的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
如果您已经有数据库使用以下来导入dump
或sql
文件
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;
然后将sql
或dump
文件从数据库导入
mysql> source pathToYourSQLFile;
注意:如果您的terminal不在dump
或sql
文件所在的位置,请使用上面的相对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_name
和USE 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
导入一个数据库
-
去驱动器:
command: d:
-
MySQLlogin
command: c:\xampp\mysql\bin\mysql -u root -p
-
它会要求密码。 input:
pwd
-
select数据库
use DbName;
-
提供文件名称
\.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 unzip
: sudo 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类似;
对我来说重要的区别:
- 数据库必须先存在
-
-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。