Dans ma base de données j'ai quelques tables et vues. Comment puis-je exporter toutes les tables (et non les vues) de ma base de données à partir de la ligne de commande?tables de vidage mysql seulement
Répondre
Vous pouvez utiliser mysqldump avec l'option --ignore-table pour exclure les vues individuellement. Ou utilisez mysqldump et supprimez les vues avec une application/manuellement. grep pourrait être une option:
grep -v "CREATE VIEW" db.dump > db-without-views.dump
Le mysqldump de mise en œuvre actuelle ne crée pas des décharges sans vues - et, en outre, (la dernière fois que j'ai vérifié) les vues sont en fait créé deux fois - une fois comme une table, la table est abandonné et remplacé par une vue. Vous ne pouvez donc pas filtrer la commande "CREATE VIEW", sauf si ce comportement a été modifié. Toutefois, mysqldump prendra une liste de tables en tant que paramètres suivant le nom de la base de données. Quelque chose comme ceci:
mysqldump -ujoe -pmysecret joesdb posts tags comments users
+1: J'aime ça – vietean
Vous pouvez même interroger les tables de My Le schéma d'information de SQL: 'mysqldump the_db_i_want $ (mysql -Ne" SÉLECTIONNEZ TABLE_NAME FROM INFORMATION_SCHEMA.TABLES O WH TABLE_SCHEMA = 'the_db_i_want' ET TABLE_TYPE = 'BASE TABLE' ")' –
backuping une seule table à partir d'une base de données
mysqldump -uUSERNAME -pPASWORD DATABASE TABLE_NAME --host=HOST_NAME > c:\TABLE_NAME.sql
La restauration d'une seule table à partir d'une base de données de vidage
mysql -uUSERNAME -pPASSWORD DATABASE --host=HOST_NAME < c:\TABLE_NAME.sql
Pour ignorer une vue unique de votre DB pour Dump :
mysqldump -uusrname -ppwd -h hostname --ignore-table=db.view_name db > db.sql
Pour ignorer vue multiple de votre Db Dump:
mysqldump -uusrname -ppwd -h hostname --ignore-table=db.view1 --ignore-table=db.view2 db > db.sql
REMARQUE: ignorer plusieurs vues pour une utilisation de vidage --ignore-table
options multiples fois.
Utilisation
php mysqldump.php mydatabase myusername mypassword > myoutputfile.sql
C'est un script assez vieux de la mienne. Quelqu'un pourrait facilement l'adapter pour utiliser PDO si vous n'avez pas accès aux fonctions mysql.
<?php
if (is_array($argv) && count($argv)>3) {
$database=$argv[1];
$user=$argv[2];
$password=$argv[3];
}
else {
echo "Usage php mysqdump.php <database> <user> <password>\n";
exit;
}
$link = mysql_connect('localhost', $user, $password);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$source = mysql_select_db('$database', $link);
$sql = "SHOW FULL TABLES IN `$database` WHERE TABLE_TYPE LIKE 'VIEW';";
$result = mysql_query($sql);
$views=array();
while ($row = mysql_fetch_row($result)) {
$views[]="--ignore-table={$database}.".$row[0];
}
//no views or triggers please
echo passthru("mysqldump -u root --password=\"$password\" $database --skip-triggers ".implode(" ",$views));
?>
Effectuez les opérations suivantes:
mysqldump -h drupdbsvr -u elt_drupal_dba -pdrupdev-654! clms_admin views_display views_view view_argument view_exposed_filter view_filter view_sort view_tablefield view_view > /opt/dbdump/clms_admin_view.sql
Lorsque la syntaxe est: -
mysqldump -h hostname -u database_user_name database_password database_name table_name1 table_name2 > path/sql_file.sql
script de mise à jour @ ladieu:
- arguments Shell sont correctement saisies permettant des mots de passe avec coquillages
- En utilisant PDO au lieu des fonctions spécifiques de MySQL (parfois une adresse IP semble être résolu contre DNS avec les mysql_ * fonctions et donc déclencher une erreur)
- hypothèse Suppression que le script est utilisé localement (ajouté le paramètre hôte)
- aide les options "-r" pour éviter les problèmes d'encodage
- nommez le fichier de sortie.sql
- paramètres réarrangés il ne rentre dans « Je veux me connecter avec l'utilisateur identifié par et dump database>
<?php
if (is_array($argv) && count($argv)>3) {
$host=($argv[1]);
$user=($argv[2]);
$password=($argv[3]);
$database=($argv[4]);
}
else {
echo "Usage php mysqdump.php <host> <user> <password> <database>\n";
exit;
}
echo 'connecting to'.$host;
$pdo=new PDO("mysql:host=$host;dbname=$database",$user,$password);
//$link = mysql_connect($host, $user, $password);
//$source = mysql_select_db($database, $link);
$sql = "SHOW FULL TABLES IN `$database` WHERE TABLE_TYPE LIKE 'VIEW';";
$result = $pdo->query($sql);
$views=array();
while ($row = $result->fetch()) {
$views[]="--ignore-table={$database}.".$row[0];
}
//no views or triggers please
$host=escapeshellarg($host);
$user=escapeshellarg($user);
$password=escapeshellarg($password);
$database=escapeshellarg($database);
echo passthru("mysqldump -h $host -u $user --password=\"$password\" $database --skip-triggers ".implode(" ",$views)." -r $database.sql");
Amusez-vous!
- 1. Bibliothèque pour lire un vidage MySQL?
- 2. Importer un vidage XML de Wikipédia non-anglais dans MySQL?
- 3. Grandes tables MySQL
- 4. PHP MySQL Joining Tables
- 5. Joindre des tables - MySQL & PHP
- 6. Mysql joindre les tables question
- 7. MySQL Choisir REJOIGNEZ 3 tables
- 8. Requête MySql, combiner les tables
- 9. tables sont vides dans MySQL
- 10. COUNT Mysql (*) sur plusieurs tables
- 11. Interrogation deux tables ... dans MySQL
- 12. MySql: Sélection à partir de plusieurs tables
- 13. Plusieurs tables de données en PHP/MySQL?
- 14. Recherche de plusieurs tables avec MySQL
- 15. Mise à jour multi-tables (MySQL)
- 16. MySQL: Sélectionnez Distinct à partir de 2 tables différentes?
- 17. MySQL importe seulement une seule ligne à partir de CSV
- 18. Erreur lors de l'installation de vidage
- 19. Comment restaurer un fichier de vidage à partir de mysqldump?
- 20. Requête MySQL basée sur 3 tables
- 21. Script PHP pour peupler les tables MySQL
- 22. MYSQL: Deux tables SELECT sans valeurs communes
- 23. Performance MySQL: Table unique ou plusieurs tables
- 24. Recherche plein texte MySQL sur plusieurs tables
- 25. Interroger deux tables dans une mysql requête
- 26. Comment sélectionner plusieurs tables en utilisant mysql?
- 27. MySQL plusieurs tables et plusieurs lignes
- 28. Correspondance des tables MySQL en utilisant Perl
- 29. Comment puis-je fusionner deux tables MySQL?
- 30. SubSonic ne génère pas de tables de clés étrangères MySql
Prenez garde que le dumper écrit plusieurs lignes par vue, donc en excluant la première ligne mentionnée, seules des erreurs apparaîtront dans votre sauvegarde –
Qu'est-ce que @ZsoltSzilagy a dit: --ignore-tables fonctionne, mais le reste se traduira par une exportation brisée – DougW
Pourquoi est-ce marqué comme correct, cela n'aidera pas à –