如果 1 个表不存在,则使用 mysqldump 创建数据库

标签 mysql command-line-arguments

正如主题所暗示的,我正在尝试使用 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/

相关文章:

php - mysql if not null 查询未运行

java - 在java中接受日期类型命令行参数

php - PDO 中的表单更新数据

php - 仅显示重复列值中的第一个

php - 从数据库获取数据并与用户输入进行比较

python argparse如何将整个命令作为字符串获取

haskell - optparse-applicative : Require at least one argument

PHP重定向到多个页面

windows - 我是否需要在程序集中复制命令行参数

Python argparse : default argument stored as string, 未列出