我在导入某些CSV / TXT文件时遇到问题。
在公司,我们收到其他来源(公司)的文件。其中一些文件有时会被破坏。
例如,一个包含6列(id,name,city,state,zipCode,phone)和200万行的文件。该文件的前10,000行是正常的。但是在文件的中间而不是6列,它有5列甚至7列。
好像有人"合并了#34;几个文件进入这一个并没有注意列数。因此,当我将其导入MySql数据库表时,由于列被破坏,数据非常混乱。 zipCode记录显示在字段状态等等。
我想知道在将这个文件导入我的数据库之前如何扫描这个文件,比如计算&#34 ;;"每行的分隔符。是否可以使用正则表达式或最佳选择?
我的程序是用Lazarus / Pascal编写的。
答案 0 :(得分:1)
我会逐行读取文件并检查列。
如果某行符合预期列(计数,请将其复制到另一个文件中input_OK.csv
)。
如果它没有将其转储到折线文件(input_KO.csv
)中。
研究input_KO.csv错误,更正错误,然后将更正后的文件导入数据库。
IMO,正则表达式需要很长时间。