我有一个很大的数据库,里面存储了不同的事件。现在我正在编写一个新程序,我必须将数据从sql数据库迁移到mysql数据库。
因此,我必须对不同的字段做一些修改。例如,将日期和时间字段设置为日期时间字段。因此,我首先计划使用一个php脚本,它适用于其他较小的数据表。但是在events表中,我有大约200000行,这会导致处理php时超时。
所以我决定使用bash脚本来实现它。我还是bash脚本的初学者,我尝试了以下方法来阅读文件:
# !/bin/bash
export IFS=","
filename=events.csv
cat $filename | while read -r id eventkind name oert_dst1 oert_dst2 oert_dst3 eins_dst forces creator createdat editor editat datefromdate datefromtime datetodate datatotime city street oert note referto state owner verband staat verkehr wasser history einsltr;
do echo $id;
done
它按预期工作并读取文件的内容。
但是:
在“note”字段中,有一个换行字符进入的内容。脚本的结果是:
"VKA_ID"
134301
134306
Veranstalter: Stadt Fürstenfeldbruck"
134307
带有“veranstalter…”的行是“note”字段中的内容。如果我在编辑器中打开csv文件,还有linebreak。
对于导出,我使用了sqldeveloper提供的gui,我没有找到任何函数来避免这个换行符。
有人有主意吗?
p、 我忘了说。php解析正确。我将文件读入一个数组,还有linebreak,但在数组字段中。新线检测在那里正常工作。很遗憾我不能用php来处理那个大文件。。。
1条答案
按热度按时间6ju8rftf1#
但是在events表中,我有大约200000行,这会导致处理php时超时。
您可以使用php,只需覆盖设置的时间限制:
或设置ini\ U时:
这也可以在一个循环内完成,以获得“刚好足够的时间”来处理每个记录: