Опитвам се да изхвърля подмножество от таблица в MySQL с mysqldump. Имам стойностите на id на редове, които искам да избера от таблицата, съхранени във файл. Когато използвам тези стойности като променлива, както следва:
ids=`cat ids.csv`
mysqldump -u root -p db Table --where="id in ($ids)" >> dump.sql
Взимам:
x.bash: ред x: /usr/bin/mysqldump: Списъкът с аргументи е твърде дълъг
Може да опитам да разделя променливата $ids (1,2,3,4,..) на един ред на по-къси списъци и да извикам mysqldump в цикъл, но в момента не съм много добър с циклите в bash скриптовете. Или може да има по-добър начин за решаване на този проблем.
Благодаря предварително за всяка помощ.
РЕДАКТИРАНЕ
Имайки предвид предложението на @ajreal, ако го направя
mysql -u root -p -e "select * into outfile ./dump.sql from db.Table where id in ($ids)"
Отново получавам „Списъкът с аргументи е твърде дълъг“.
Получавам стойностите на id от друга среда. Базата данни, срещу която изпълнявам този скрипт, и базата данни, към която получавам стойностите на id, които да използвам в клаузата where, са в отделни среди. Освен това, преди тази стъпка създавам дъмп файла с опцията --ignore-table, като пренебрегвам таблицата „Таблица“, която използвам в следващата стъпка. Затова бих предпочел да използвам mysqldump и за тази стъпка.