.sql
导出的phpMyAdmin
文件。我想使用命令行将其导入到其他服务器中。我安装了Windows Server 2008 R2。我将
.sql
文件放在C驱动器上,并尝试了此命令database_name < file.sql
它不起作用。我遇到语法错误。 />
#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 楼
如果您已经有数据库,请使用以下命令导入dump
或sql
文件:mysql -u username -p database_name < file.sql
如果不需要,则需要创建相关的数据库(空)在MySQL中,首先要在终端或cmd中运行以下命令,登录到
MySQL
控制台。mysql -u userName -p;
,并在提示时提供密码。
接下来,创建一个数据库并使用它:
mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;
,然后将
sql
或dump
文件从mysql> source pathToYourSQLFile;
注意:如果您的终端不在
dump
或sql
文件所在的位置,请使用上面的相对路径。评论
您的答案为像我这样的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_name
和USE 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-collation,则需要使用以下命令:
mysql -u database_user -p --default-character-set = utf8 [ db_name]
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
如果您使用其他数据库版本,请考虑搜索相应的手册版本。提到的链接是指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 文件路径/file_name.sql
从数据库导出:
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
评论
使用命令行还原MYSQL Dump文件的可能副本stackoverflow.com/questions/11407349/的可能重复项...
这些重复的家伙怎么了?这确实是一个有用的问题,它有自己的用途
@ValentinoPereira,在确定重复的人之前,您是否检查过原始的问题日期?
您可以分享一个可复制的示例吗?数据库