mysqldump 仅数据

Posted

技术标签:

【中文标题】mysqldump 仅数据【英文标题】:mysqldump data only 【发布时间】:2011-07-03 20:36:12 【问题描述】:

我正在寻找在我的 mysql 数据库中转储所有数据的语法。我不想要任何表格信息。

【问题讨论】:

https://dev.mysql.com/doc/refman/5.7/en/mysqldump-definition-data-dumps.html 【参考方案1】:
mysqldump --no-create-info ...

你也可以使用:

--skip-triggers: 如果你使用触发器 --no-create-db:如果您使用的是--databases ... 选项 --compact: 如果你想去掉多余的 cmets

【讨论】:

这里是复制粘贴的完整 cmd mysqldump -u USERNAME -h HOST --no-create-info --skip-triggers YOURDATABASENAME YOURTABLENAME --where='id=12345678' 如果你得到Access denied for user ... to database '...' when doing LOCK TABLES,请使用--single-transaction @YzmirRamirez 谢谢,但在 Windows 上仅供参考,我必须对 --where 使用双引号。例如,--where="id=2" 这对我来说是一个绝妙的救星。谢谢。【参考方案2】:

这应该可行:

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

【讨论】:

--no-create-db 在使用--no-create-info时是多余的 -p 后面的空格可以 最好只使用 -p 而不提供密码,这样密码就不会存储在您的 bash 历史记录中(运行命令后会提示您输入密码)。 除了@Dan 的建议之外,它还使任何可以列出当前进程的用户都可以看到密码 (ps -ef) -p 选项后省略密码会使mysqldump 提示输入密码。【参考方案3】:

如果您只需要 INSERT 查询,请使用以下内容:

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

【讨论】:

感谢--compact 消除了额外的评论声明【参考方案4】:
 >> man -k  mysqldump [enter in the terminal]

你会发现下面的解释

--no-create-info, -t

不要编写重新创建每个转储表的 CREATE TABLE 语句。 注意 此选项不排除创建日志文件的语句 来自 mysqldump 输出的组或表空间;但是,您可以使用 --no-tablespaces 选项用于此目的。

--无数据,-d

不写任何表行信息(即不dump table 内容)。如果您只想转储 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

【讨论】:

是否有理由使用两次'-t'和'-d'选项?【参考方案5】:

建议使用以下sn-p。即使使用巨大的桌子也能正常工作(否则你会在编辑器中打开转储并删除不需要的东西,对吧?;)

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

至少需要 mysql 5.x,但现在谁在运行旧东西.. :)

【讨论】:

我最近遇到了一种情况,必须连接到在生产中使用 4.x 的系统。他们在表名和列名中有空格,在我看来,他们基本上做错了。【参考方案6】:

最好转储到压缩文件中

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

【讨论】:

【参考方案7】:

只需将数据转储到delimited-text format。

【讨论】:

【参考方案8】:

尝试转储到分隔文件。

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

【讨论】:

【参考方案9】:

尝试使用接受的答案导出数据时出现错误:

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

【讨论】:

以上是关于mysqldump 仅数据的主要内容,如果未能解决你的问题,请参考以下文章

mysqldump批量导出(多张表)表结构及表数据

MySQL备份恢复基础知识及MySQLdump讲解

使用 'mysqldump' 以 CSV 格式转储所有表

Mysql增量备份之Mysqldump & Mylvmbackup

mysqldump备份的问题

mysqldump恢复数据库不成功