È possibile farlo mysqldump
da solo SQL query
?
Voglio dire scaricare l' intero database, come phpmyadmin
quando esportiSQL
È possibile farlo mysqldump
da solo SQL query
?
Voglio dire scaricare l' intero database, come phpmyadmin
quando esportiSQL
Risposte:
non mysqldump, ma mysql cli ...
mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase
puoi reindirizzarlo su un file se vuoi:
mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt
Aggiornamento: post originale chiesto se poteva eseguire il dump dal database tramite query. Ciò che ha chiesto e ciò che intendeva dire era diverso. Voleva davvero solo mysqldump tutti i tavoli.
mysqldump --tables myTable --where="id < 1000"
Questo dovrebbe funzionare
mysqldump --databases X --tables Y --where="1 limit 1000000"
--no-create-info
opzione. Vedi la mia risposta per un esempio.
È possibile scaricare una query come CSV in questo modo:
SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
scp
dopo che la connessione è terminata. ecco un esempio. scp user@remote-server.com:/tmp/querydump.csv ~/local.csv
Dump di una tabella utilizzando una query where:
mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql
Scarica un intero tavolo:
mysqldump mydatabase mytable > data.sql
Appunti:
mydatabase
, mytable
e la cui dichiarazione con i valori desiderati.mysqldump
includerà DROP TABLE
e le CREATE TABLE
istruzioni nel suo output. Pertanto, se si desidera non eliminare tutti i dati nella tabella durante il ripristino dal file di dati salvato, assicurarsi di utilizzare il--no-create-info
opzione.-h
, -u
e -p
, ai comandi di esempio sopra riportati per specificare rispettivamente l'host, l'utente e la password del database desiderati.Puoi usare l'opzione --where su mysqldump per produrre un output che stai aspettando:
mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql
Verranno scaricati dalla tabella del database al massimo 100 righe da test.t1.
Saluti, WB
Se si desidera esportare le ultime n quantità di record in un file, è possibile eseguire quanto segue:
mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql
Quanto sopra salverà gli ultimi 100 record in export_file.sql, supponendo che la tabella da cui stai esportando abbia una colonna ID con incremento automatico.
Dovrai modificare i valori di utente, localhost, database e tabella. È possibile modificare facoltativamente la colonna ID ed esportare il nome del file.
MySQL Workbench ha anche questa funzione ordinatamente nella GUI. Basta eseguire una query, fare clic sull'icona Salva accanto a Esporta / Importa:
Quindi selezionare "Istruzioni SQL INSERT (* .sql)" nell'elenco.
Inserisci un nome, fai clic su Salva, conferma il nome della tabella e avrai il tuo file di dump.
La combinazione di quanto sopra è il mio vero esempio pratico, selezionando i record basati sia su meterid che su timestamp. Ho bisogno di questo comando per anni. Esegue molto rapidamente.
mysqldump -uuser -ppassword main_dbo trHourly --where="MeterID =5406 AND TIMESTAMP<'2014-10-13 05:00:00'" --no-create-info --skip-extended-insert | grep '^INSERT' > 5406.sql
mysql Esporta la riga di comando dei risultati della query :
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt