Ich habe eine Produkttabelle in einer mysql.sql-Datei. Ich möchte diese eine Tabelle extrahieren und sie in ihre eigene Datei einfügen. Wie würdest du das machen?Entpacken einer Tabelle aus einer mysql.sql-Dump-Datei
Antwort
Ich kenne kein Tool zum Parsen von rohen mySQL-Dump-Dateien auf diese Weise.
Entweder kopieren + einfügen (möglicherweise umständlich) oder in eine temporäre Datenbank importieren, alles andere löschen und die Tabelle in eine Datei zurückschreiben.
INSERT INTO tablename (field, ...) VALUES (data, ...), (data, ...), (etc..)
, die Sie grep konnten einfach:
Wenn der Dump mit der erweiterten Einsatz Syntax durchgeführt wurde, dann die eigentlichen Tabellendaten werden als eine einzige Zeile in der Dump-Datei erfolgen. Das Extrahieren der eigentlichen Tabellendefinition wird schwieriger, obwohl es unmittelbar über der Datenlinie sein sollte. Sie haben keinen Zugriff auf eine richtige Schale im Moment, aber die Spitze von meinem Kopf abgehend, so etwas wie dies könnte den Trick tun (in Pseudocode):
# retrieve line # that data insertion for the wanted table occurs on
DATALINE=`grep -l 'INSERT INTO tablename' dumpfile.sql`
# limiting ourselves to the part of the file up to the data line, find the line number
# of the last CREATE TABLE, which SHOULD be the one creating the table for the data
CREATELINE=`head -$DATALINE|grep -l 'CREATE TABLE'|tail -1|awk '{"print $1"}'`
Die Sie die Erstellung DDL extrahieren mit klugen Kopf/Schwanz und den Zeilennummern wir gerade abgerufen:
CREATE=`head -$CREATELINE dumpfile.sql|tail -$($CREATELINE - $DATALINE - 1)`
bedenken sie, dass ich die Spitze meines Kopfes auf diesem gehe weg, so ist es fast garantiert nicht, aber sollte genug sein, fang an.
Ich fand this nice solution, müssen Sie this script auf Ihrem Server herunterladen und Sie
$> ./MyDumpSplitter.sh yourfile.sql your_table_name
Dies extrahiert Tisch in your_table_name.sql
Optionnal
Jetzt geben kann es umbenennen mit dieser Art von Befehl
$> sed -i 's/`your_table_name`/`your_table_name2`/g' your_table_name.sql
Und Wieder Injektion mit
mysql> source your_table_name.sql;
Vorsicht: Beim Extrahieren einer einzelnen Tabelle aus einem vollständigen Dump gehen die 'SET-Anweisungen' am Anfang eines Dump verloren, zum Beispiel: SET NAMES utf8; - Sie könnten also eine utf8-Tabelle importieren und verschlüsselte Daten erhalten, weil der Client eine falsche Codierung verwendet! Das gleiche Problem mit allen anderen Lösungen .... – michabbb
Das ist richtig, danke für diese Information –
ich vor einer Weile in dieses Problem lief und schrieb ein Perl-Skript. Es funktionierte gut, aber es war eine ältere Version von MySQL. Nennen Sie es mögen:
extract.pl -table=TABLENAME mysqldumpfile.sql > recovered_table.sql
#!/usr/bin/perl -s -wnl #extract a single table from a mysql dump BEGIN { $table or warn "Usage: $0 -table=TABLE_TO_EXTRACT mysqldumpfile.sql" and exit 1; } /^DROP TABLE IF EXISTS `$table`/ .. /^UNLOCK TABLES;$/ and print;
einfach können Sie Stream-Editor für Filterung und Umwandlung von Text Befehl wie unten ausgeführt:
$ sed -n -e '/CREATE TABLE.*products/,/CREATE TABLE/p' mysql.sql > products.sql
Wenn Sie eine Datenbank extrahieren möchten Sie nutzen könnten:
sed -n '/^-- Current Database: `dbname`/,/^-- Current Database: `/p' dumpfile > dbname.sql 2>error
Zum Beispiel:
sed -n '/^-- Current Database: `blogs`/,/^-- Current Database: `/p' dump.sql > blogs.sql 2>error
- 1. Entpacken einer ausführbaren Datei aus einer Bibliothek in C/C++
- 2. Erstellen einer Tabelle aus einer Datei
- 3. Auswählen einer bestimmten Zeile aus einer Tabelle
- 4. Erstellen einer Bestenliste aus einer mySQL-Tabelle
- 5. Erhalten Sie Datensätze aus einer Tabelle und einer entsprechenden Tabelle
- 6. Pass einen Wert aus einer Tabelle zu einer anderen Tabelle
- 7. Ändern einer Tabelle basierend auf Daten aus einer anderen Tabelle
- 8. Tabelle von Wert aus einer anderen Tabelle
- 9. Verwenden von Spaltenwerten aus einer Tabelle innerhalb einer SELECT-Klausel aus einer anderen Tabelle
- 10. Auswahl aus einer flachen Tabelle
- 11. Erstellen einer Tabelle aus Daten
- 12. eine Variable aus einer Tabelle
- 13. Auswahl aus einer Tabelle sql
- 14. Drop-Spalten aus einer Tabelle
- 15. Entpacken einer Datei mit C#
- 16. Entpacken einer Liste von Tupeln
- 17. Erstellen einer Tabelle aus einer Textdatei und Hinzufügen einer Spalte
- 18. Entpacken Sie den SHA1-Hash aus einer Torrent-Datei
- 19. Masse eine Tabelle aus Zeilen aus einer anderen Tabelle
- 20. Summierung aus einer Tabelle erhalten, mit übereinstimmenden Werten aus einer anderen Tabelle in Excel
- 21. Alle aus einer Tabelle auswählen und der letzten Verknüpfung aus einer anderen Tabelle beitreten
- 22. MySQL Wählen Sie alle Spalten aus einer Tabelle und einige aus einer anderen Tabelle
- 23. eine Zeichenfolge aus einer Tabelle vergleichen und jedes Schlüsselwort aus einer anderen Tabelle vergleichen
- 24. SQLServer Löschen aus Tabelle mit einer Liste aus einer anderen Tabelle
- 25. Ziehen von Daten aus einer SQL Azure-Tabelle, Hinzufügen einer Spalte und Auffüllen einer anderen Tabelle
- 26. Füllen einer Tabelle mit einer großen Menge von Daten aus einer temporären Tabelle - MySQL
- 27. Argumente aus Argarse entpacken
- 28. Zuweisen von Spaltennamen aus einer Liste zu einer Tabelle
- 29. Löschen einer Zeile aus einer dynamischen HTML-Tabelle
- 30. Daten aus einer Tabelle in einer Seite mit Java
Es gäbe keinen Grund, alles andere fallen zu lassen, können Sie einzelne Tabellen mysqldump – stew
@ stew guten Punkt. @OP hier ist wie: http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html # option_mysqldump_tables –