正如主题所暗示的,我正在尝试使用 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 个表但没有创建数据库:
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>
我不想要的每张 table 的选项?那将是一个巨大的痛苦。
最佳答案
我想出了一个解决方法。上面的命令是使用 exec() 从 PHP 脚本执行的。我将脚本更改为首先执行
show create database BBI
查询。然后修改从中返回的语句以添加 IF NOT EXISTS 部分和 USE BBI;陈述。然后它运行上面的第二个 mysqldump 语句输出 1 个表但没有创建数据库。然后它将 CREATE DATABASE 语句添加到 mysqldump 输出文件的开头,一切正常。
关于如果 1 个表不存在,则使用 mysqldump 创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42816681/