2017-12-15 6 views
0

Ich versuche, eine SQL-Ausgabedatei aus einer Abfrage zwischen drei Tabellen zu haben. Unten ist mein Code:Dump Abfrage auf mehrere Tabelle

mysqldump --user=user --password=password --host=localhost dbname --where="SELECT v.ITEM_ID , v.CODE ,\ 
s.SENSOR , d.DESTINATIONCODE \ 
FROM V_TABLE v, S_TABLE s ,D_TABLE d \ 
WHERE s.ITEM_ID = v.ITEM_ID \ 
AND s.CREATIONDATETIME < '2014-2-16 00:00:00'\ 
AND v.DESTINATION_ID=d.ID" > /var/www/dumps/output_15_12_2017.sql 

diese geben mir einen Fehler:

mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `COMMANDSPOOL` WHERE SELECT v.ITEM_ID , v.CODE ,s.SENSOR , d.DESTINATIONCODE FROM V_TABLE v, S_TABLE s ,D_TABLE d WHERE s.ITEM_ID = v.ITEM_ID AND s.CREATIONDATETIME < '2014-2-16 00:00:00' AND v.DESTINATION_ID=d.ID': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT v.ITEM_ID , v.CODE ,s.SENSOR , d.DESTINATIONCODE FROM V_TABLE' at line 1 (1064  ) 

vielleicht ist es ein Fehler

+0

Mögliches Duplikat von [Wie verwende ich mysqldump für einen Teil einer Tabelle?] (Https://stackoverflow.com/questions/5658284/how-to-use-mysqldump-for-a-portion-of-a- Tabelle) –

+1

'--where' kann nur die where-Klausel angeben, keine vollständige Auswahl. Verwenden Sie dafür 'SELECT * IN OUTFILE' output_14_12_2017.sql''. –

+0

Entschuldigung, ich verstehe nicht, ich schrieb: '--where =" SELECT v.ITEM_ID, v.CODE ... 'oder Sie meinen in '>/var/www/dumps/output_15_12_2017.sql'? – pikimota

Antwort

2

in mit \ ist eine Abfrage zu verwenden, wie, dass man es in die schicken könnte mysql Client (nicht der mysqldump Dienstprogramm) und dann die Ausgabe an die stattdessen Datei umleiten:

echo "SELECT v.ITEM_ID , v.CODE ,\ 
s.SENSOR , d.DESTINATIONCODE \ 
FROM V_TABLE v, S_TABLE s ,D_TABLE d \ 
WHERE s.ITEM_ID = v.ITEM_ID \ 
AND s.CREATIONDATETIME < '2014-2-16 00:00:00'\ 
AND v.DESTINATION_ID=d.ID\ 
" | mysql --user=user --password=password --host=localhost dbname > /var/www/dumps/output_15_12_2017.sql 

Wenn Sie diese Route verwenden, können die Optionen --batch und --table nützlich sein.

+0

das hat für mich funktioniert Zuerst logge ich mich in mysql 'mysql -u name -p dbname' und führe dann die Abfrage ' select .. ... ins Outfile '.... sql'; ' – pikimota

Verwandte Themen