我想用mysqldump在MySQL中轉儲表的一個子集。我有我想從表中選擇的行的id值,存儲在一個文件中。當我使用這些值作爲變量如下:在mysqldump中使用where選項和bash腳本中的長參數列表
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值。我運行此腳本的數據庫以及我在where子句中使用id值的數據庫位於不同的環境中。 此外,在此步驟之前,我使用--ignore-table選項創建轉儲文件,忽略在下一步中使用的「表格」表格。所以我寧願爲這一步使用mysqldump。
負,它保存到文件,並使用**的mysql -u -p根..
ajreal
2010-12-03 18:51:06
一些變化後,@Dennis的回答是非常有益的。再次感謝。 – eaykin 2010-12-07 15:31:46