2017-03-15 2 views
1

Comme le sujet l'indique, je suis en train d'utiliser mysqldump pour créer un fichier qui comprendmysqldump avec créer la base de données sinon pour 1 table existe

CREATE DATABASE IF NOT EXISTS 

mais seulement une sortie seule table. J'ai essayé plusieurs combinaisons de --databases, --tables, etc., mais je ne peux pas l'obtenir pour ajouter la partie IF NOT EXISTS du tout (elle est là mais commentée), et cela ne semble fonctionner que pour sortir toutes les tables. C'est possible?

Certaines choses que j'ai essayé:

Ajoute CREATE DATABASE (mais pas l'IF NOT EXISTS partie), mais toutes les sorties les tableaux:

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

Sorties du tableau 1, mais pas CREATE DATABASE:

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

donne erreur:

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

Est-ce que je dois recourir à l'utilisation de la

--ignore-table=<table> 

l'option pour chaque table que je ne veux pas? Ce serait une énorme douleur.

Répondre

0

J'ai été capable de trouver une solution de contournement. Les commandes ci-dessus étaient exécutées à partir d'un script PHP en utilisant exec(). J'ai changé le script pour d'abord faire un

show create database BBI 

requête. Il modifie ensuite l'instruction renvoyée à partir de celle-ci pour ajouter la partie IF NOT EXISTS et l'USE BBI; déclaration. Ensuite, il exécute la deuxième instruction mysqldump ci-dessus qui génère la table 1 mais n'a pas CREATE DATABASE. Il ajoute ensuite l'instruction CREATE DATABASE au début du fichier de sortie de mysqldump et tout fonctionne.