我正在寻找在我的mysql数据库中转储所有数据的语法。我不想要任何表信息。
答案 0 :(得分:485)
mysqldump --no-create-info ...
如果您使用的是触发器,则还需要包含--skip-triggers
如果您使用的是--databases ...
选项,则还需要添加--no-create-db
答案 1 :(得分:131)
这应该有效:
# To export to file (data only)
mysqldump -u [user] -p[pass] --no-create-info mydb > mydb.sql
# To export to file (structure only)
mysqldump -u [user] -p[pass] --no-data mydb > mydb.sql
# To import to database
mysql -u [user] -p[pass] mydb < mydb.sql
注意: -p
&amp;之间没有空格[pass]
答案 2 :(得分:20)
>> man -k mysqldump [enter in the terminal]
你会找到以下解释
- no-create-info,-t
不要编写重新创建每个转储表的CREATE TABLE语句。 注意此选项不会排除创建日志文件的语句 mysqldump输出的组或表空间;但是,你可以使用 --no-tablespaces选项用于此目的。
- 无数据,-d
不要写任何表行信息(也就是说,不要转储表 内容)。如果要仅转储CREATE TABLE,这将非常有用 表的语句(例如,创建一个空的副本 表通过加载转储文件)。
# To export to file (data only)
mysqldump -t -u [user] -p[pass] -t mydb > mydb_data.sql
# To export to file (structure only)
mysqldump -d -u [user] -p[pass] -d mydb > mydb_structure.sql
答案 3 :(得分:9)
如果您只想要INSERT查询,请使用以下命令:
mysqldump --skip-triggers --compact --no-create-info
答案 4 :(得分:2)
建议使用以下代码段。即使使用巨大的桌子也能正常工作(否则你会在编辑器中打开转储并删除不需要的东西,对吗?)
mysqldump --no-create-info --skip-triggers --extended-insert --lock-tables --quick DB TABLE > dump.sql
至少需要mysql 5.x ,但现在谁运行旧东西.. :)
答案 5 :(得分:0)
只需将数据转储到delimited-text format。
答案 6 :(得分:0)
尝试转储到分隔文件。
mysqldump -u [username] -p -t -T/path/to/directory [database] --fields-enclosed-by=\" --fields-terminated-by=,
答案 7 :(得分:0)
尝试使用接受的答案导出数据时出现错误:
ERROR 1235 (42000) at line 3367: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
如上所述:
mysqldump --no-create-info
将导出数据,但它也会导出create trigger语句。如果像我一样使用一个命令输出数据库结构(也包括触发器),然后使用上面的命令获取数据,你也应该使用'--skip-triggers'。
所以如果你想要数据:
mysqldump --no-create-info --skip-triggers
答案 8 :(得分:0)
最好转储到压缩文件
mysqldump --no-create-info -u username -hhostname -p dbname | gzip > /backupsql.gz
并使用pv apt-get install pv
进行还原以监视进度
pv backupsql.gz | gunzip | mysql -uusername -hhostip -p dbname