Ho una tabella prodotti in un file mysql.sql. Vorrei estrarre quella tabella e inserirla nel proprio file. Come faresti a fare questo?Estrazione di una tabella da un file di dump mysql.sql
risposta
Non conosco nessuno strumento per analizzare file di dump mySQL non elaborati in questo modo.
O copiare e incollarlo (potenzialmente ingombrante) o importarlo in un database temporaneo, eliminare tutto il resto e riversare la tabella in un file.
Se il dump è stato fatto con la sintassi inserto estesa, quindi i dati della tabella effettivi sarà fatto come una singola riga all'interno del file di dump:
INSERT INTO tablename (field, ...) VALUES (data, ...), (data, ...), (etc..)
che si potrebbe semplicemente grep fuori. Estrarre la definizione della tabella effettiva sarà più difficile, sebbene DOVREBBE essere immediatamente sopra la linea di dati. Non hanno accesso a una vera e propria shell in questo momento, ma andando fuori dalla parte superiore della mia testa, qualcosa come questo potrebbe fare il trucco (in pseudo-codice):
# 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"}'`
La si può estrarre la creazione DDL con giudizioso testa/coda e i numeri di riga che abbiamo appena recuperato:
CREATE=`head -$CREATELINE dumpfile.sql|tail -$($CREATELINE - $DATALINE - 1)`
tenere a mente che sto andando fuori dalla parte superiore della mia testa su questo, quindi è quasi garantito di non lavorare, ma dovrebbe essere sufficiente per iniziare.
ho trovato this nice solution, è necessario scaricare this script sul server e digitare
$> ./MyDumpSplitter.sh yourfile.sql your_table_name
Questo estrarrà il vostro tavolo in your_table_name.sql
Optionnal
Ora puoi rinominarlo usando questo tipo di comando
$> sed -i 's/`your_table_name`/`your_table_name2`/g' your_table_name.sql
e re-iniezione con
mysql> source your_table_name.sql;
Attenzione: con l'estrazione di una singola tabella da un dump completo, le "SET statements" all'inizio di un dump vengono perse, ad esempio: SET NAMES utf8; - così potresti importare una tabella utf8 e ottenere dati codificati perché il client usa una codifica errata! lo stesso problema con tutte le altre soluzioni .... – michabbb
Questo è corretto, grazie per questa informazione –
mi sono imbattuto in questo problema qualche tempo fa e ho scritto uno script Perl. Ha funzionato bene, ma era una versione precedente di MySQL. Chiamatela come:
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;
semplicemente è possibile eseguire editor di flusso per il filtraggio e il comando di testo trasformando come di seguito:
$ sed -n -e '/CREATE TABLE.*products/,/CREATE TABLE/p' mysql.sql > products.sql
Se si desidera estrarre un database è possibile utilizzare:
sed -n '/^-- Current Database: `dbname`/,/^-- Current Database: `/p' dumpfile > dbname.sql 2>error
Esempio:
sed -n '/^-- Current Database: `blogs`/,/^-- Current Database: `/p' dump.sql > blogs.sql 2>error
- 1. Tabella di estrazione da DOCX
- 2. Estrazione di colonne selezionate da una tabella utilizzando BeautifulSoup
- 3. Estrazione di nomi di file da un percorso MYSQL
- 4. Estrazione di frame di un file .avi
- 5. Trova spazi tabella utilizzati nel file di dump di datapump
- 6. Estrazione di una stringa da un frame di dati
- 7. Estrazione di titoli da file PDF?
- 8. Estrazione di un numero da una stringa di 1 parola
- 9. estrazione da un file tar con nomi di voci duplicate
- 10. Estrazione di testo da un file PDF utilizzando Python
- 11. estrazione di valore da un file utilizzando il codice
- 12. Estrazione di dati da un semplice file XML
- 13. estrazione iMacros da una serie di dati
- 14. Come analizzare un file dump da un file DLL Delphi?
- 15. estrazione di giorni da un valore numpy.timedelta64
- 16. Creare un dump dell'heap java da un dump di memoria di Windows
- 17. JAR - estrazione di file specifici
- 18. Estrazione di cifre da un float C++
- 19. Estrazione di unique_ptr da una coda di priorità
- 20. Tempo di estrazione da POSIXct
- 21. Estrazione di layout di tastiera da windows
- 22. Postgres su Heroku e scarico di una tabella singola per eseguire il dump del file
- 23. Estrazione di stderr da pexpect
- 24. estrazione di colori da un'immagine
- 25. Estrazione dati casella di testo da più file Microsoft Word
- 26. Estrazione un elemento XML da un file XML utilizzando XPath
- 27. estrazione di proprietà da NSArray di oggetti
- 28. Estrazione di elementi di una mappa da Clojure core.logic
- 29. Estrazione EXIF da JPEG
- 30. Perché un dump SVN di una singola revisione è più grande di un dump completo?
Non ci sarebbe motivo di abbandonare tutto il resto, è possibile mysqldump tabelle singole – stew
@stew buon punto. @OP ecco come: http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html # option_mysqldump_tables –