仅mysqldump数据


Answers:


552
mysqldump --no-create-info ...

您也可以使用:

  • --skip-triggers:如果您使用触发器
  • --no-create-db:如果使用--databases ...选项
  • --compact:如果您想删除多余的评论

47
这是复制mysqldump -u USERNAME -h HOST --no-create-info --skip-triggers YOURDATABASENAME YOURTABLENAME --where='id=12345678'
粘贴

2
如果你得到Access denied for user ... to database '...' when doing LOCK TABLES,使用--single-transaction
罗尔夫

@YzmirRamirez谢谢,但是仅供参考,我必须在Windows上使用双引号--where。例如,--where="id=2"
Kip

这对我来说是一个出色的节省者。谢谢。
肯·英格拉姆

149

这应该工作:

# 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&之间没有空格[pass]


12
--no-create-db使用时是多余的--no-create-info
James McMahon 2012年

4
空格后面-p是好的
谢谢您

12
通常最好只使用-p而不提供密码,这样密码就不会存储在bash历史记录中(运行命令后会提示您输入密码)。

2
除了@Dan的建议外,它还使密码对所有可以列出当前进程的用户可见(ps -ef
TMG

1
-p选项后遗漏密码会mysqldump提示您输入密码。
Melle

22
 >> 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
是否有理由两次使用'-t'和'-d'选项?
erwan

19

如果只需要INSERT查询,请使用以下命令:

mysqldump --skip-triggers --compact --no-create-info


谢谢您--compact删除多余的注释声明
chiliNUT

2

建议使用以下代码段。即使在巨大的表上也可以正常工作(否则,您将在编辑器中打开转储并删除不需要的东西,对吗?)

mysqldump --no-create-info --skip-triggers --extended-insert --lock-tables --quick DB TABLE > dump.sql

至少需要mysql 5.x,但现在谁可以运行旧版本.. :)


我最近遇到了一种情况,必须连接到在生产环境中使用4.x的系统。他们在表名和列名中都有空格,而我认为,他们所做的基本上都是错的。
Elkvis '18


0

尝试转储到定界文件。

mysqldump -u [username] -p -t -T/path/to/directory [database] --fields-enclosed-by=\" --fields-terminated-by=,

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

将导出数据,但也将导出创建触发器语句。如果像我一样,使用一个命令输出数据库结构(还包括触发器),然后使用上述命令获取数据,则还应使用“ --skip-triggers”。

因此,如果只需要数据:

mysqldump --no-create-info --skip-triggers
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.