Ich habe eine MySQL-Datenbank und ich versuche, eine Möglichkeit zu finden, seine Struktur nur zu exportieren, ohne die Auto-Inkrement-Werte. mysqldump --no-data
würde fast den Job machen, aber es behält die auto_increment Werte. Gibt es eine Möglichkeit, dies zu tun, ohne PHPMyAdmin zu benutzen (von dem ich weiß, dass es das kann)?mysqldump - Struktur exportieren nur ohne Autoinkrement
Antwort
Sie können dies tun:
mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed 's/ AUTO_INCREMENT=[0-9]*\b//' > <filename>.sql
Wie bereits von anderen erwähnt, Wenn Sie sed
zu Werke richtig wollen, fügen Sie die g
(für g lobaler Ersatz) Parameter wie folgt aus:
mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed 's/ AUTO_INCREMENT=[0-9]*\b//g' > <filename>.sql
(dies funktioniert nur, wenn Sie GUI Tools installiert haben: mysqldump --skip-auto-increment
)
Der letzte hat super funktioniert. Vielen Dank. – Paris
Ich glaube nicht, dass 'skip-auto-increment' eine echte Option ist. Ich finde es nicht in der [Dokumentation] (http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html). Keiner der beiden MySQL Bugs für dieses Problem erwähnt es: [20786] (http://bugs.mysql.com/bug.php?id=20786), [30957] (http://bugs.mysql.com/bug .php? id = 30957). Welche Version von mysqldump hat diese Option? – Rich
'--skip-auto-increment' ist eine Option, die in MySQL GUI Tools hinzugefügt wird, wenn man sich richtig erinnert. (nicht sicher ^^) Also in der Tat ist es nicht wirklich eine Lösung! Aber der zweite Inline-Befehl ist korrekt, ich habe ihn [hier] (http: //bugs.mysql.com/bug.php? id = 20786) wo das Thema über ** autoincrement ** Problem zu sprechen, und bieten die Idee der 'sed' Filterung! – JoDev
mysq ldump -u [USER] -p [KENNWORT] -d --skip-opt --eine-transaktion [DB_SCHEMA]> [FILE.ESTENSIONE]
Dadurch wird auch das Flag auto_increment für die Felder entfernt, für die es aktiviert ist, nicht nur der Wert auto_increment am Ende. – Aquarion
'--skip-opt' diskutiert [hier] (http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html#option_mysqldump_opt) und [hier.] (Http: //bugs.mysql .com/bug.php? id = 22941) – Chris
Es ist --create-options, die im Lieferumfang enthalten ist - opt, das standardmäßig die AUTO_INCREMENT-Tabellendefinitionen generiert.
Wenn Sie nur die Basistabellen wollen,
mysql -hlocalhost -uuser -ppass --skip-column-names --batch \
-e "select table_name from tables where table_type = 'BASE TABLE' and table_schema = 'schemaname'" INFORMATION_SCHEMA \
| xargs mysqldump -hlocalhost -uuser -ppass \
--no-data --skip-triggers --skip-opt --no-create-db \
schemaname
Wenn Sie Ansichten möchten, auch Trigger und Routinen,
mysqldump -hlocalhost -uuser -ppass \
--skip-opt --events --routines --no-data \
schemaname
Beachten Sie, dass damit auch alle Autoinkrementfelder, 'drop tables', Zeichensätze usw. gelöscht werden. – Deanna
JoDev Antwort perfekt für mich mit einer kleinen Anpassung an die regelmäßige arbeitete sed Ausdruck:
mysqldump -d -h localhost -u<user> -p<password> <databaseName> | sed 's/ AUTO_INCREMENT=[0-9]*//g' > databaseStructure.sql
Dank diesem Beitrag konnte ich meine Frage beantworten:
Wie kann ich Versionskontrolle auf meinem db?
Dann einfach dieses Skript, das ich erstellt: db_bkp.sh
#!/bin/sh
filename="db_structure.sql"
backupfolder="/var/www/"
fpath="$backupfolder/$filename"
usr="DBUSER"
pass="DBPASS"
db="DBNAME"
mysqldump --user=$usr --password=$pass --no-data $db | sed 's/ AUTO_INCREMENT=[0-9]*//g' > "$fpath"
Dann ist dieses ich hinzugefügt crontab: das Ergebnis, db_structure.sql
git und vor
30 5 * * * sh /home/scripts/db_bkp.sh
Da ist in meinem Repo Ich habe drängen Änderungen an prod Ich überprüfe immer, ob es strukturelle Änderungen gibt, die ich auf allen dbs vergessen habe.
- 1. MySql nur Schema ohne Daten exportieren
- 2. mysqldump Kompression
- 3. MySQL - mysqldump --routinen, um nur eine gespeicherte Prozedur (nach Name) und nicht jede Routine zu exportieren
- 4. Wie verwende ich mysqldump, um nur die CREATE TABLE-Befehle zu exportieren?
- 5. mysqldump ohne "CREATE Algorithm" und "DEFINER"
- 6. mysqldump ohne Unterbrechung der Live-Produktion INSERT
- 7. mysqldump gesamte Struktur, sondern nur Daten aus ausgewählten Tabellen in einem einzigen Befehl
- 8. Mongoose Autoinkrement
- 9. Autoinkrement-Spalte
- 10. Autoinkrement nicht
- 11. Pause: relative * ohne * Struktur
- 12. mysqldump mit Datenbankzeile erstellen
- 13. Kann ich eine aktualisierte Struktur in eine MySQL-Tabelle importieren, ohne den aktuellen Inhalt zu verlieren?
- 14. ASP.net herunterladen/exportieren ohne HttpContext
- 15. Mysqldump Frage
- 16. Autoinkrement in couchdb
- 17. id-Feld ohne Autoinkrement Option in der Migration
- 18. Exportieren von SSRS nach Excel ohne Kopfzeilen
- 19. mysqldump für eine Tabelle speichert nur einen Datensatz
- 20. mysqldump exportiert nur eine Tabelle auf andere Tabelle
- 21. Golang modifizieren Json ohne Struktur
- 22. Aufruf von mysqldump aus dem Skript ohne Passwortabfrage
- 23. Google App Engine - Autoinkrement
- 24. Conditional Autoinkrement in xsl
- 25. Java Hibernate ID Autoinkrement
- 26. Autoinkrement beginnt bei Maximalwert
- 27. Autoinkrement-Eigenschaft nicht Schlüssel
- 28. SQL Anywhere-Autoinkrement zurückgesetzt
- 29. SQLite Autoinkrement funktioniert nicht
- 30. Hibernate-Annotationen, Autoinkrement bezogen
Mit MySQL 5.5 (Server) sieht '--no-data' standardmäßig auto_increment-Werte aus. –
@JoeyAdams bist du sicher? Das ist nicht das Verhalten, das ich erfahre – aland
@JoeyAdams MySQL 5.7. * S mysqldump nicht das auto_increment weglassen, wenn --no-data. –