données mysqldump uniquement

Réponses:

553
mysqldump --no-create-info ...

Vous pouvez également utiliser:

  • --skip-triggers: si vous utilisez des déclencheurs
  • --no-create-db: si vous utilisez l' --databases ...option
  • --compact: si vous voulez vous débarrasser des commentaires supplémentaires
matei
la source
47
Voici le cmd complet pour les pasters de copiemysqldump -u USERNAME -h HOST --no-create-info --skip-triggers YOURDATABASENAME YOURTABLENAME --where='id=12345678'
Yzmir Ramirez
2
Si vous obtenez Access denied for user ... to database '...' when doing LOCK TABLES, utilisez--single-transaction
Rolf
@YzmirRamirez merci mais pour info sur windows j'ai dû utiliser des guillemets pour --where. Par exemple,--where="id=2"
Kip
Ce fut un économiseur brillant pour moi. Merci.
Ken Ingram
149

Cela devrait fonctionner:

# To export to file (data only)
mysqldump -u [user] -p[pass] --no-create-info mydb > mydb.sql

# To export to file (structure only)
mysqldump -u [user] -p[pass] --no-data mydb > mydb.sql

# To import to database
mysql -u [user] -p[pass] mydb < mydb.sql

REMARQUE: il n'y a pas d'espace entre -p&[pass]

Ish
la source
12
--no-create-dbest redondant lors de l'utilisation--no-create-info
James McMahon
4
Un espace après -pva bien
Merci
12
Il est généralement préférable d'utiliser simplement -p sans fournir le mot de passe afin que le mot de passe ne soit pas stocké dans votre historique bash (vous serez invité à entrer le mot de passe après avoir exécuté la commande).
Dan
2
En plus des conseils de @ Dan, il rend également le mot de passe visible pour tout utilisateur qui peut répertorier les processus en cours ( ps -ef)
TMG
1
Oublier le mot de passe après que l' -poption mysqldumpdemande le mot de passe.
Melle
22
 >> man -k  mysqldump [enter in the terminal]

vous trouverez l'explication ci-dessous

--no-create-info, -t

N'écrivez pas d'instructions CREATE TABLE qui recréent chaque table sauvegardée. Remarque Cette option n'exclut pas les instructions créant des groupes de fichiers journaux ou des espaces disque logiques de la sortie mysqldump; cependant, vous pouvez utiliser l'option --no-tablespaces à cet effet.

--no-data, -d

N'écrivez aucune information de ligne de table (c'est-à-dire, ne videz pas le contenu de la table). Cela est utile si vous souhaitez vider uniquement l'instruction CREATE TABLE pour la table (par exemple, pour créer une copie vide de la table en chargeant le fichier de vidage).

# To export to file (data only)
mysqldump -t -u [user] -p[pass] -t mydb > mydb_data.sql

# To export to file (structure only)
mysqldump -d -u [user] -p[pass] -d mydb > mydb_structure.sql
Angelin Nadar
la source
3
y a-t-il une raison pour utiliser deux fois les options '-t' et '-d'?
erwan
19

Si vous voulez juste les requêtes INSERT, utilisez ce qui suit:

mysqldump --skip-triggers --compact --no-create-info

Jonathan
la source
merci pour --compactqui se débarrasse des déclarations de commentaires supplémentaires
chiliNUT
2

Suggère d'utiliser l'extrait de code suivant. Fonctionne bien même avec des tables énormes (sinon vous ouvririez le vidage dans l'éditeur et supprimeriez les choses inutiles, non?;)

mysqldump --no-create-info --skip-triggers --extended-insert --lock-tables --quick DB TABLE > dump.sql

Au moins mysql 5.x requis, mais qui gère de vieux trucs de nos jours .. :)

wuzer
la source
J'ai rencontré récemment une situation où je devais me connecter à un système qui utilisait 4.x en production. Ils avaient des espaces dans les noms de table et de colonne, et à mon avis, ils faisaient tout fondamentalement mal.
Elkvis
0

Essayez de vider dans un fichier délimité.

mysqldump -u [username] -p -t -T/path/to/directory [database] --fields-enclosed-by=\" --fields-terminated-by=,
ed209
la source
0

Lorsque j'ai tenté d'exporter des données à l'aide de la réponse acceptée, j'ai reçu une erreur:

ERROR 1235 (42000) at line 3367: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

Comme mentionné ci-dessus:

mysqldump --no-create-info

Exportera les données mais exportera également les instructions de déclenchement de création. Si comme moi, votre structure de base de données de sortie (qui comprend également des déclencheurs) avec une seule commande, puis en utilisant la commande ci-dessus pour obtenir les données, vous devez également utiliser '--skip-triggers'.

Donc, si vous voulez juste les données:

mysqldump --no-create-info --skip-triggers
Ben Waine
la source