我有一个CSV文件,我想在其中搜索并替换每一行以形成SQL语句。我想出了这个perl脚本......
#!/bin/bash
perl -pi -e "s/(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*)/REPLACE INTO student (ID, SIS_ID, STUDENT_NUM, USER_ID, OTHER_USER_ID) VALUES (REPLACE(uuid(), '-', ''), '\$24', '\$26', '\$2', '\$27');/g" $1
但是,在一行文件中,运行大约需要15秒。你可以想象在thousnads行的文件上,这需要几个小时。
我是否可以通过另一种方式编写上述内容以加快搜索和替换速度?我没和Perl结婚。我使用的是Mac 10.9.5,bash shell。
答案 0 :(得分:4)
我可能会parse the CSV file逐行构建SQL语句,而不是搜索和替换。它看起来不像你正在做任何需要正则表达式的文本匹配功能的东西。
修改:请参阅我的answer,查看您的另一篇非常相似的,可能重复的帖子,了解“正确”方法。