【问题标题】:mysql command line append databasemysql命令行追加数据库
【发布时间】:2018-04-15 08:46:14
【问题描述】:

是否可以使用如下命令将另一个 sql 附加到现有表数据中。

$ mysql -u username -p -h localhost DATA-BASE-NAME < data.sql

此命令将覆盖现有的表数据。

着眼于追加到现有而不是覆盖。

有什么命令吗?

【问题讨论】:

  • 这将执行 data.sql 中包含的任何内容(就像您从通常执行这些操作的任何位置执行这些语句一样)。如果 data.sql 文件包含删除和重新创建表及其数据的命令,它将执行此操作。 (这通常是您进行备份时的情况)。如果它会例如只包含插入,它会追加数据。
  • 在命令提示符下使用这种风格的命令,有什么方法可以按照你提到的那样做吗?此类命令的任何开关? mysqldump --user=xxxxxx --password=xxxxxx xxxxxx zzzzzz > aaaaaaa.sql
  • mysqldump --no-create-info 可能会做你想做的事。但它不会(在导入时)检查已经存在的数据;它需要一个空数据库,如果已经有数据,它可能会或可能不会正常工作。如果您有更复杂的要求(并且“复杂”的标准非常低,因为已经像“复杂”一样具有自动增量 ID 可能不会像您希望的那样自动工作)

标签: mysql command line


【解决方案1】:

查看要添加到现有数据的 sql 文件。它可能是一个转储,其中包含以下开头的行:DROP TABLE IF EXISTS 和/或它包含 DROP DATABASE IF EXISTS db_name

你需要从你提供给mysql的sql文件中删除这些行,或者通过修改你创建文件的dump命令(参见--skip-add-drop-table选项和--no-create- db 选项)或通过使用编辑器或 awk 或其他工具从 sql 文件中删除这些行。

https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

其他相关 SO 链接:mysqldump with create database lineMySQL import - How to ignore Drop table if exists line?

【讨论】:

  • 我正在尝试使用 mysqldump --user=xxxxxx --password=xxxxxx xxxxxx zzzzzz > aaaaaaa.sql 编写一个自动批处理过程
  • 有趣。我建议阅读 mysql-dump 的命令行选项,以便只导出所需的内容。
猜你喜欢
  • 1970-01-01
  • 2014-09-01
  • 2011-03-02
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
  • 2012-07-10
  • 2022-06-13
  • 2011-06-14
相关资源
最近更新 更多