我有一个包含数字列表的 csv 文件,
479856252|1329148400996|1329148405406|1329148412444|0|6042292534|6042292534|14016487697|0|6
479856262|1329148401487|1329148405287|1329148412444|0|6136992594|6136992594|14016487697|0|6
479856272|1329148405124|1329148405124|1329148412470|0|8883398128||4016487697|0||P|0|7
479856282|1329148114930|1329148117966|1329148412502|0|8006564132|8779918502|7657954163|2609
当我执行 awk -F'|' '{print $1;}' file.csv > file2.csv
我得到以下表 ID
12345
67891
32234
22345
12345
我有一个 for 循环,它是这样工作的
for i in `cat file2.cvs`
do
DELETE FROM TABLE1 WHERE ID = $i
done
但是这会在我的盒子上造成高负载,我希望我可以拆分操作(对于 file2.csv 中的每 100 条记录)执行删除,然后休眠 1 秒钟,剩余的值继续进行,直到结束文件。
非常感谢您的帮助。
谢谢
最佳答案
用一个 SQL 命令完成:
DELETE FROM TABLE1 WHERE ID in (`cat file2.cvs | tr '\n' ','` -1)
末尾的 -1 是为了迎合结尾的逗号。如果您的输入文件在最后一行没有换行符,则您不需要 -1
。
关于mysql脚本bash循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9283921/