Я пытаюсь получить выходной файл sql из запроса между тремя таблицами. Ниже мой код:
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
это даст мне ошибку:
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 )
возможно, это ошибка при использовании \
Чтобы использовать такой запрос, вы можете отправить его в клиент mysql
(не утилиту mysqldump
), а затем перенаправить этот вывод в файл:
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
Если вы идете по этому маршруту, то возможно --batch
и --table
.
mysql -u name -p dbname
а затем запускаю запросselect ..... into outfile '....sql';