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

我安装了Windows Server 2008 R2。我将.sql文件放在C驱动器上,并尝试了此命令

database_name < file.sql


它不起作用。我遇到语法错误。 />

评论

使用命令行还原MYSQL Dump文件的可能副本

stackoverflow.com/questions/11407349/的可能重复项...

这些重复的家伙怎么了?这确实是一个有用的问题,它有自己的用途

@ValentinoPereira,在确定重复的人之前,您是否检查过原始的问题日期?

您可以分享一个可复制的示例吗?数据库

#1 楼

试试:

mysql -u username -p database_name < file.sql


检查MySQL选项。

注-1:最好使用SQL文件file.sql的完整路径。 br />
注2:使用-R--triggers保留原始数据库的例程和触发器。默认情况下,不会复制它们。或CREATE DATABASE选项),然后再导入。

评论


当我从Toad之类的程序运行文件时,我没有收到任何错误,但是从命令行运行文件时,却收到了我提到的错误

–杰伦
13年7月16日在1:37

请注意,是的,如果尚不存在,则必须从mysql创建(空)数据库,然后才能导入它。

–Skippy le Grand Gourou
2015年8月8日14:29

是的,记住要从MySQL控制台创建一个空的数据库(如果db以前不存在),如下所示:CREATE DATABASE db-name;

– Qasim
16 Dec 20'在6:06

确保检查备份文件中是否没有“ use'original_db'”。尽管我指定要还原到新数据库“ mysql new_db
– Shaakir
17年2月28日在11:55

@Joe,是的,如果在'-p'和'password'之间有空格,它会认为'password'是数据库名称。另外,您也可以输入“ -p”而不输入密码,然后按Enter键时会提示您输入密码。

– NotJay
17年9月13日在19:54

#2 楼

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

shell> mysqldump db_name > backup-file.sql


您可以像这样将转储文件重新加载到服务器中:
< br UNIX

shell> mysql db_name < backup-file.sql


Windows命令提示符中的相同之处:

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


PowerShell

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


MySQL命令行

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


评论


@Mike您是否要在mysql>命令行中启动它?您应该改用shell。

–vladkras
13年7月16日在1:27

如何使用壳牌?我在Windows Server 2008上使用mysql 5.6

–杰伦
13年7月16日在1:34

使用>将mysqldump输出重定向到文件时要特别小心,特别是如果您想控制编码时。相反,您可能希望使用--result-file参数,以便编码不受Shell / OS的控制。

–Bernard Chen
16年11月29日在19:53

是的,但是...为什么不直接从Powershell运行mysql?

–查尔斯·伍德
19-12-09 at 15:19

@CharlesWood,因为在Powershell中,“ <”运算符保留供将来使用。

–NanoWizard
6月10日15:20

#3 楼

关于导入大文件所花费的时间:最重要的是,它花费了更多时间,因为MySQL的默认设置为autocommit = true。您必须先将其关闭,然后再导入文件,然后检查导入的工作方式像gem。

您只需要执行以下操作:

评论


有没有一种方法可以在用于导入的mysql命令的单个命令行中执行此操作?

– Volomike
15年1月21日在20:12

我同意这是最好的答案。 autocommit = 0部分的速度差异很大。

– aexl
16年5月23日在21:36

autocommit = 0是否可以在较大的文件上使用?像8gb sql文件。

–新手
16 Dec 9'在5:06



不一定总是需要关闭自动提交。值得在编辑器中检查数据库转储,它可能已经以SET autocommit = 0;开头。

– hashchange
18年7月2日在12:32

@Volomike {echo“ SET autocommit = 0;”;猫db.sql;回声“ COMMIT;”;} | mysql -u what -p-用于posix兼容的命令行,不确定Windows

– iateadonut
3月17日7:11

#4 楼

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

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


评论


建议上面失败的错误已存在数据库错误,但这似乎可行

–好运
18-09-30在16:41

#5 楼

导入架构的最简单方法:

登录mysql并发出以下提及命令。

mysql> use your_db_name;

mysql> source /opt/file.sql;


评论


如果其中没有多个数据库的转储,则无需使用“ use”命令即可使用

– Hayden Thring
18年11月11日在21:24

我试图从名称不同但结构相同的数据库导入转储,作者选择的正确答案无效,它在转储文件中创建了一个以该数据库命名的新数据库。这个答案就在这里做了我想要的,谢谢

–Wuelber Castillo
18年11月13日在17:10

大!正是我想要的!

–谢尔盖·扎哈兰科(Sergei Zakharenko)
18年11月23日在8:24

这也监视脚本执行,比其他答案要好得多

–refex
19-10-11在8:08

#6 楼

我们可以使用以下命令从命令行导入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文件夹/目录中,请转到桌面目录并输入以下命令: SQL文件位于Project目录中。如果要从Desktop目录访问它,则可以执行以下操作:

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


评论


-p和密码之间不应有空格

– Ejaz
14年8月19日在12:00

日本这行不通。正确的将是mysql -u root -p“ password” bank
– Armin
15年2月22日在14:11

为什么您根本无法在一行中回答? mysql -u用户名-ppassword db_name
–否
15年7月2日在11:11

尽管这与该问题/答案完全无关,但是在使用非平凡的数据库时,最好不要在同一命令上以纯文本形式输入密码。如果未在命令中指定密码,则会提示您输入密码,然后可以安全输入

– asss
17年11月14日在13:22

特别是因为.bash_history

–尼尔·乔杜里(Neil Chowdhury)
18年8月9日在23:03

#7 楼

如果您已经有数据库,请使用以下命令导入dumpsql文件:

mysql -u username -p database_name < file.sql


如果不需要,则需要创建相关的数据库(空)在MySQL中,首先要在终端或cmd中运行以下命令,登录到MySQL控制台。

mysql -u userName -p;


,并在提示时提供密码。

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

mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;


,然后将sqldump文件从

mysql> source pathToYourSQLFile;


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

评论


您的答案为像我这样的MySQL初学者提供了一个全新的解决方案:1.创建数据库(如果不存在)。 2.将源文件指向创建的数据库以导入数据/元数据。

– Sumanth Lazarus
19-10-29在7:44



然后如何将输出存储在文件中?

–苏拉杰斯瓦拉(Suraj Jeswara)
11月25日15:07

@SurajJeswara请参阅此答案stackoverflow.com/questions/4146456/…

– Kasun Siyambalapitiya
11月29日13:34

#8 楼


打开MySQL命令行
键入mysql bin目录的路径,然后按Enter。

将SQL文件粘贴到mysql服务器的bin文件夹中。
创建一个MySQL中的数据库。
使用要在其中导入SQL文件的特定数据库。
键入source databasefilename.sql并输入

您的SQL文件已成功上传。


评论


键入您的mysql bin目录的路径,然后按

– Ramesh Pareek
17年7月3日在11:03

#9 楼

适用于我的解决方案如下:

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;


评论


在将我的sql文件放在正确的/ bin目录视图Windows资源管理器中之后,这对我使用MySQL Command Line Client起作用。谢谢

– klewis
17年7月12日在13:29



有点慢,但是不会停在中间,不要说MySQL服务器已经消失了。

–Jaskaran Singh
17年12月19日在11:12

#10 楼

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

mysqldump -u username -p database_name > database_name.sql


要将SQL文件导入数据库(请确保您与SQL处于同一目录中文件或提供文件的完整路径),请执行:

mysql -u username -p database_name < database_name.sql


#11 楼

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

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


评论


当您为意图添加一些说明时,我认为这对于OP和其他问题会更有用。

–记者
2014年9月8日13:59

仅当您在Windows环境变量中定义了mysql.exe时,该方法才有效。如果不是,则应键入mysql.exe文件的所有路径。而且您的语法是错误的。例如:“ d:\ wamp \ bin \ mysql \ mysql5.5.8 \ bin \ mysql.exe -u YOUR_USERNAME -p DB_NAME
– wappy
2014年10月13日在12:25

#12 楼

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

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


#13 楼

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

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


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

#14 楼

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


#15 楼

用于导出数据库:

mysqldump -u username -p database_name > file.sql


用于导出数据库:

mysql -u username -p database_name < file.sql


#16 楼

要一次导入多个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


对于XAMPP:

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


#17 楼

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

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

#18 楼

导入数据库


驱动器:
 command: d:



MySQL登录
 command: c:\xampp\mysql\bin\mysql -u root -p


>
要求提供密码。输入它:
 pwd



选择数据库
 use DbName;



提供文件名
 \.DbName.sql




#19 楼

使用:

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


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

在我们的上下文中,我认为这些将是有用的选项:

[~]$ 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.


如果我们导入的是大型数据库而没有进度条,那么这很有趣。使用Pipe Viewer并查看通过管道进行的数据传输。对于Mac,brew install pv

对于Debian / Ubuntu,apt-get install pv

有关其他方面,请参阅到pv-管道查看器

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


评论


对于Centos:yum install pv

–珍妮
19年3月28日在2:51

#20 楼

转到具有MySQL的目录。

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


也可以转储所有数据库,请使用-all-databases选项,并且不再需要指定数据库的名称。 />
mysqldump -u username -ppassword –all-databases > dump.sql


或者您可以使用一些GUI客户端(例如SQLyog)进行此操作。

#21 楼

添加--force选项:

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


#22 楼

您可以尝试此查询。

导出:

mysqldump -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/

#23 楼

尽管大多数答案只是提到简单的命令


在导出的表中具有utf8-collat​​ion,则需要使用以下命令:

mysql -u database_user -p --default-character-set = utf8 [ db_name]
Surley也适用于其他字符集,如何在此处显示正确的符号:

https://dev.mysql.com /doc/refman/5.7/en/show-collat​​ion.html

还有一条评论提到,如果数据库永远不存在,则必须首先创建一个空数据库。在某些情况下,这可能是正确的,但取决于导出文件。如果导出的文件已包含创建数据库的命令,则无需在单独的步骤中创建数据库,甚至可能导致导入错误。因此,建议在导入时首先查看文件中的内容,以了解其中包含哪些命令,在导出时,请注意设置,尤其是在文件很大且难以在编辑器中读取的情况下。此处列出并说明了该命令的更多参数:

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

如果您使用其他数据库版本,请考虑搜索相应的手册版本。提到的链接是指MySQL 5.7版。
编辑:因此,尽管导出和导入的命令不同,但提到的参数却没有。

#24 楼

在WAMP的Windows 7上,可以从命令行(cmd)使用以下命令。

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


#25 楼

我认为这对于使用Mac OS X的用户可能有用:

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


xampp或其他Web服务器替换mamp

#26 楼

导入数据库:


mysql -u用户名-p database_name

从数据库导出:


mysqldump -u用户名-p数据库名称> /文件路径/文件名.sql 。

#27 楼

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

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


#28 楼

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

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


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

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


评论


但是,命令行是易失的(除非您有键盘记录器或有经验的人,否则我希望它在本地执行时是安全的),而文件是永久性的,因此风险尤其高。纯文本格式

–乔治·比尔比利斯(George Birbilis)
18年3月29日在22:08

...但是,mysql命令确实确实警告“ mysql:[警告]在命令行界面上使用密码可能不安全。”

–乔治·比尔比利斯(George Birbilis)
18年3月29日在22:24

#29 楼

与vladkras的答案类似:如何在MySQL中使用命令行导入SQL文件?。

对我而言的主要区别:


数据库必须首先存在
-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运行Fedora26。

#30 楼

为了备份,制作一个BAT文件并使用Task Scheduler运行该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