【问题标题】:mysqldump with create database if not exist for 1 table如果 1 个表不存在,则创建数据库的 mysqldump
【发布时间】:2017-03-15 17:26:04
【问题描述】:

正如主题所暗示的,我正在尝试使用 mysqldump 创建一个文件,其中包含

CREATE DATABASE IF NOT EXISTS

但只输出一个单个表。我已经尝试过 --databases、--tables 等的多种组合,但我根本无法添加 IF NOT EXISTS 部分(它在那里但被注释掉了),而且它似乎只适用于输出所有表格。有可能吗?

我尝试过的一些事情:

添加 CREATE DATABASE(但不是 IF NOT EXISTS 部分)但输出所有表:

mysqldump --host=<host> --user=<u> --password=<p> --port=<port> --verbose --single-transaction --add-drop-table --create-options --databases BBI > outfile.sql

输出 1 个表但没有 CREATE DATABASE:

mysqldump --host=<host> --user=<u> --password=<p> --port=<port> --verbose --single-transaction --add-drop-table --create-options BBI table1 > outfile.sql

给出错误:

mysqldump --host=<host> --user=<u> --password=<p> --port=<port> --verbose --single-transaction --add-drop-table --create-options --databases BBI.table1 > outfile.sql

我必须求助于使用

--ignore-table=<table>

我不想要的每张桌子的选项?那将是一个巨大的痛苦。

【问题讨论】:

    标签: mysql command-line-arguments options


    【解决方案1】:

    我想出了一个解决方法。上面的命令是使用 exec() 从 PHP 脚本执行的。我把脚本改成先做一个

    show create database BBI
    

    查询。然后它修改从该语句返回的语句以添加 IF NOT EXISTS 部分和 USE BBI;陈述。然后它运行上面的第二个 mysqldump 语句,该语句输出 1 个表但没有 CREATE DATABASE。然后它将 CREATE DATABASE 语句添加到 mysqldump 输出文件的开头,一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 2012-05-29
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      相关资源
      最近更新 更多