如何使用命令提示符导出mysql数据库?


342

我的数据库很大,因此我想使用命令提示符将其导出,但是我不知道如何。

我正在使用WAMP。


6
DOS?您在使用Windows 98吗?还是您指的是命令提示符?
jle 2010年

在使用wamp的情况下,您还应该具有phpmyadmin,带有导出选项
Lars C. Magnusson,

Answers:


536

首先检查您的命令行是否可以识别mysql命令。如果没有,请输入以下命令并输入:

set path=c:\wamp\bin\mysql\mysql5.1.36\bin

然后使用此命令导出数据库:

mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql

然后将提示输入数据库密码

执行此命令时,这会将数据库导出到您当前所在的路径

注意:以下是有关导入和导出的一些详细说明


7
它给错误“的mysqldump:遇到错误:1049:未知数据库‘thepassword’选择数据库的时候”,但工作时,我删除“-p的userPassword”
阿泰丹尼斯

11
@AteşDanış -p和之间没有空格thepassword
查尔斯伍德

44
您应该只使用-p,然后会提示您输入密码。这样,您避免保存密码,例如.bash_history
nuala 2014年

7
对我来说,此命令有效:mysqldump -u YourUser -p YourDatabaseName> wantedsqlfile.sql(键入命令,按Enter,然后输入密码)。
2014年

3
在命令行上指定密码应该被认为是不安全的。
wappy

112

只需使用以下命令,

出口:

mysqldump -u [user] -p [db_name] | gzip > [filename_to_compress.sql.gz] 

导入:

gunzip < [compressed_filename.sql.gz]  | mysql -u [user] -p[password] [databasename] 

注意:关键字“ -p”和密码之间没有空格。


1
我认为您错过了他正在使用WAMP的事实-Windows ... gunzip / gzip未与Windows捆绑在一起。安装某些东西后可能可以运行命令,但是我认为您已经错过了这一事实。
罗夫2014年

2
指定gzip -9将使生成的文件小一些,因为使用了最大压缩率。
AntonK,

39

首先打开命令提示符,然后在cmd中打开bin目录(我希望您知道cmd命令),然后转到WAMP程序文件中MySql文件夹的bin目录。

运行命令

mysqldump -u db_username -p database_name > path_where_to_save_sql_file

按回车系统将导出特定的数据库并创建sql文件到给定的位置。

我希望你明白了:)如果您有任何问题,请告诉我。


我的朋友我尝试解释一下过程。而不是给予直接命令
Mitesh vaghela

38

好吧,您可以使用以下命令,

mysqldump --databases --user=root --password your_db_name > export_into_db.sql

并且生成的文件将在您运行该命令的目录中可用。

您可以在以下官方参考中找到更多信息mysqldump导入导出MySQL DB

注意:使用--databases而不是,--database因为不再支持最后一个。

请享用 :)


4
对于那些出现诸如“使用LOCK TABLES时拒绝访问”之类的错误的用户,应在命令中添加“ --single-transaction”参数。
Skyrpex 2015年

我遇到了一个错误,mysqldump: [ERROR] unknown option '--database'但是机智排除了--database它。
hejdav

@Skyrpex谢谢,这就是我一直在寻找的解决方案。
Martijn

22

在此路径转到命令提示符,

C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>

然后给出此命令以导出数据库(-p后没有空格

mysqldump -u[username] -p[userpassword] yourdatabase > [filepath]wantedsqlfile.sql


21

使用以下命令找到您的mysql实例:

which mysql

如果正确,则使用以下命令导出(否则,导航至bin中mamp文件夹中的mysql实例):

mysqldump -u [username] -p [password] [dbname] > filename.sql

如果您希望同时压缩它:

mysqldump -u [username] -p [password] [db] | gzip > filename.sql.gz

然后,您可以使用以下命令在服务器之间移动该文件:

scp user@xxx.xxx.xxx.xxx:/path_to_your_dump/filename.sql.gz your_detination_path/

(其中xxx.xxx.xxx.xxx是服务器IP地址)

然后导入:

gunzip filename.sql.gz | mysql -u [user] -p [password] [database]

4
同样,W AMP => Windows。是Linux命令。gunzip / gzip未与Windows捆绑在一起-可能不可用。SCP ...你明白了。
Rolf 2014年

Opentuned的答案很棒。一件事是password从命令行删除实际值:mysqldump -u [用户名] -p [dbname]> filename.sql这可以防止人们在您的历史记录中搜索密码。
文森特

1
@ Opentuned,Linux恋物癖是什么?
Pacerier,2015年

-p [密码]必须靠近,例如:mysqldump -u tutorials -p'mypassword' -h 127.0.0.1 database_name > file_backup_database_name_.sql 警告:在命令行界面上使用密码可能不安全。
Marwan Salim

19

要也导出过程,功能和触发器,请添加--routines参数:

mysqldump -u YourUser -p YourDatabaseName --routines > wantedsqlfile.sql


开关--routines的作用不同:)是否有任何提示仅导出过程,功能和触发器?对于那些忘记了转换并导出了没有“算法”的“纯”数据库的人:)
AntonK

顺便说一句,--events需要使用该开关来转储事件计划程序事件,并且除非--skip-triggers已指定,否则始终导出TRIGGER (根据7.4.5.3转储存储的程序
AntonK

10

输入此命令以导出数据库,其中还将包括日期

mysqldump -u[username] -p[userpassword] --databases yourdatabase | gzip > /home/pi/database_backup/database_`date '+%m-%d-%Y'`.sql.gz

(-p后没有空格)


请注意,指定--databases将插入语句as CREATE DATABASE XYZ;USE XYZ;,这在将SQL导入具有其他名称的另一个DB中时并不方便...
AntonK

8

我已将Wamp服务器安装在D:驱动器中,因此您必须从ur命令行->转到以下路径(如果您已在c:驱动器中安装了您的wamp,则只需将d:替换为c:这里)

D:\>cd wamp
D:\wamp>cd bin
D:\wamp\bin>cd mysql
D:\wamp\bin\mysql>cd mysql5.5.8 (whatever ur verserion will be displayed here use keyboard Tab button and select the currently working mysql version on your server if you have more than one mysql versions)
D:\wamp\bin\mysql\mysql5.5.8>cd bin
D:\wamp\bin\mysql\mysql5.5.8\bin>mysqldump -u root -p password db_name > "d:\backupfile.sql"

这里的root是我的phpmyadmin的用户,密码是phpmyadmin 的密码,因此,如果您尚未为root设置任何密码,而在那个地方没有任何输入,则 db_name是数据库(要进行备份的数据库),backupfile.sql是您要在其中备份数据库文件的文件,还可以将备份文件位置(d:\ backupfile.sql)从更改为计算机上的任何其他位置


在我发现的所有方法中,此答案是唯一对我有用的答案。我正在使用MySQL版本5.6,因此命令提示符为... \ MySQL \ MySQL Server 5.6 \ bin。您将必须使用MySQL管理员用户名和密码,为特定数据库指定的用户名和密码将不起作用。谢谢萨钦。甚至MySQL手册v.5.6中的说明也无效。语法不完整。
Max West

-p和和之间的空格真的起作用password吗?
戴维斯

7
mysqldump -h [host] -p -u [user] [database name] > filename.sql

本地主机中的示例

mysqldump -h localhost -p -u root cookbook > cookbook.sql

4

所有这些解决方案的问题(使用 >重定向器字符)是您从stdout写入转储,这可能会破坏数据库某些字符的编码。

如果您遇到字符编码问题。如 :

错误1064(42000):您的SQL语法有错误;请检查与您的MySQL服务器版本相对应的手册,以在附近使用正确的语法...

然后,您必须使用-r选项写入文件。

的MySQL

mysqldump -u user -pyour-password-without-space-between-letter-p-and-your-password --default-character-set=utf8 --host $HOST database-name -r dump.sql

使用Docker

docker exec --rm -v $pwd:dump -it mysql:5:7 mysqldump -u user -pyour-password-without-space-between-letter-p-and-your-password --default-character-set=utf8 --host $HOST database-name -r dump/dump.sql

注意:这会将当前路径作为转储安装在实例内部。

我们在这里找到了答案

相反,请勿使用<将转储导入数据库的方法,同样,您的非utf8字符可能不会被传递;但喜欢来源选项。

mysql -u user -pYourPasswordYouNowKnowHow --default-character-set=utf8 your-database
mysql> SET names 'utf8'
mysql> SOURCE dump.sql

1

句法

(mysqldump.exe full path) -u (user name) -p (password) (database name) > (export database file full path)

c:>d:\wamp\bin\mysql\mysql5.6.12\bin\mysqldump.exe -u root -p mydbname > d:\mydb.sql

其中d:\ wamp \ bin \ mysql \ mysql5.6.12 \ bin \ mysqldump.exe将是您的实际mysqldump.exe路径,mydbname是您要导出的数据库的名称,而d:\ mydb.sql是其中的路径您要存储导出的数据库。


0

我用过沼泽服务器。我试穿了

c:\wamp\bin\mysql\mysql5.5.8\bin\mysqldump -uroot -p db_name > c:\somefolder\filename.sql

root 是我的mysql用户名,如果您有密码,请使用以下命令进行指定:

-p[yourpassword]

希望它能工作。


如果您也想输入密码,则需要使用--password
Erce

0

对于Windows OS

当您在尝试执行mysqldump命令时收到错误1064 mysql(42000)时,从当前终端退出。并执行mysqldump命令。

mysql>exit 
c:\xampp\mysql\bin>mysqldump -uroot -p --databases [database_name] > name_for_export_db.sql


-2

您可以使用此脚本从此链接提供的终端中导出或导入任何数据库:https : //github.com/Ridhwanluthra/mysql_import_export_script/blob/master/mysql_import_export_script.sh

echo -e "Welcome to the import/export database utility\n"
echo -e "the default location of mysqldump file is: /opt/lampp/bin/mysqldump\n"
echo -e "the default location of mysql file is: /opt/lampp/bin/mysql\n"
read -p 'Would like you like to change the default location [y/n]: ' location_change
read -p "Please enter your username: " u_name
read -p 'Would you like to import or export a database: [import/export]: ' action
echo

mysqldump_location=/opt/lampp/bin/mysqldump
mysql_location=/opt/lampp/bin/mysql

if [ "$action" == "export" ]; then
    if [ "$location_change" == "y" ]; then
        read -p 'Give the location of mysqldump that you want to use: ' mysqldump_location
        echo
    else
        echo -e "Using default location of mysqldump\n"
    fi
    read -p 'Give the name of database in which you would like to export: ' db_name
    read -p 'Give the complete path of the .sql file in which you would like to export the database: ' sql_file
    $mysqldump_location -u $u_name -p $db_name > $sql_file
elif [ "$action" == "import" ]; then
    if [ "$location_change" == "y" ]; then
        read -p 'Give the location of mysql that you want to use: ' mysql_location
        echo
    else
        echo -e "Using default location of mysql\n"
    fi
    read -p 'Give the complete path of the .sql file you would like to import: ' sql_file
    read -p 'Give the name of database in which to import this file: ' db_name
    $mysql_location -u $u_name -p $db_name < $sql_file
else
    echo "please select a valid command"
fi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.