我有一個MySQL列錯誤地加載了數據。我創建了一個腳本,用於讀取我知道弄錯的1400萬個主鍵的文本文件。我有一個基本的bash while
循環,但不是爲每個id發出一個單獨的mysql命令,我想爲一組id(我確實擁有1400萬)執行此操作。使用BASH數組修改MySQL表格
目前:
while IFS='' read -r id || [[ -n "$id" ]]; do
mysql -e "UPDATE my_table SET direct = 1 WHERE id = $id" -u $USER -p$PASS db
done < "$1"
什麼,我想要做的是在閱讀一組的id和這樣說WHERE id in ($#ids)
,而無需執行一堆循環和modulos的。想法?
可行,但要記住正常的命令行和查詢字符串的長度限制。你將只能在shell中刪除/截斷之前將這麼多id加入到cli中。 –
查詢長度限制?我正在考慮在文件中讀取$ STRING變量,因此$ STRING看起來像「1283792,7657887263,16876873」等,然後將其轉儲到'in()'子句中。 – jiveturkey
mysql中的'max_allowed_packet'。任何比這更長的時間將會......不好。 –