Czy można to zrobić mysqldump
pojedynczo SQL query
?
Mam na myśli zrzucenie całej bazy danych, podobnie jak phpmyadmin
podczas eksportowania doSQL
Czy można to zrobić mysqldump
pojedynczo SQL query
?
Mam na myśli zrzucenie całej bazy danych, podobnie jak phpmyadmin
podczas eksportowania doSQL
Odpowiedzi:
nie mysqldump, ale mysql cli ...
mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase
możesz przekierować go do pliku, jeśli chcesz:
mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt
Aktualizacja: Oryginalny post zapytał, czy może zrzucić z bazy danych przez zapytanie. To, o co prosił i co miał na myśli, było inne. Naprawdę chciał po prostu przemyśleć wszystkie stoły.
mysqldump --tables myTable --where="id < 1000"
To powinno działać
mysqldump --databases X --tables Y --where="1 limit 1000000"
--no-create-info
opcję. Zobacz moją odpowiedź na przykład.
Możesz zrzucić zapytanie jako csv w następujący sposób:
SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
scp
po zakończeniu połączenia. oto przykład. scp user@remote-server.com:/tmp/querydump.csv ~/local.csv
Zrzuć tabelę za pomocą zapytania where:
mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql
Zrzuć cały stół:
mysqldump mydatabase mytable > data.sql
Uwagi:
mydatabase
,mytable
i gdzie sprawozdanie z żądanych wartości.mysqldump
dołącza DROP TABLE
i CREATE TABLE
instrukcje w swoich wynikach. Dlatego jeśli nie chcesz usunąć wszystkich danych w tabeli podczas przywracania z zapisanego pliku danych, upewnij się, że używasz--no-create-info
opcji.-h
,-u
oraz -p
opcje do przykładu powyżej poleceń w celu określenia żądanego hosta bazy danych, użytkownika i hasło, odpowiednio.Możesz użyć opcji --where na mysqldump, aby uzyskać dane wyjściowe, na które czekasz:
mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql
Maksymalnie 100 wierszy z test.t1 zostanie zrzuconych z tabeli bazy danych.
Pozdrawiam, WB
Jeśli chcesz wyeksportować ostatnią liczbę rekordów do pliku, możesz uruchomić następujące czynności:
mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql
Powyższe spowoduje zapisanie ostatnich 100 rekordów w pliku export_file.sql, przy założeniu, że tabela, z której eksportujesz, ma kolumnę z automatycznie zwiększanym numerem.
Musisz zmienić wartości użytkownika, hosta lokalnego, bazy danych i tabeli. Opcjonalnie możesz zmienić kolumnę id i nazwę pliku eksportu.
MySQL Workbench ma tę funkcję również w GUI. Po prostu uruchom zapytanie, kliknij ikonę Zapisz obok Eksportuj / Importuj:
Następnie wybierz z listy „Instrukcje SQL INSERT (* .sql)”.
Wpisz nazwę, kliknij zapisz, potwierdź nazwę tabeli, a otrzymasz plik zrzutu.
Łącząc wiele z powyższego, to mój prawdziwy praktyczny przykład, wybierając rekordy na podstawie zarówno metrumid i znacznika czasu. Potrzebowałem tego polecenia od lat. Wykonuje się bardzo szybko.
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 Eksportuj wiersz polecenia wyników zapytania :
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt