场景:尝试导入多个(> 100),大型(> 1M recs)平面文件(csv)。
问题:许多记录缺少字段分隔符。
问:是否有解析工具会尝试定义和验证文件并允许您进行“内联”更正?
ETA:我正在尝试使用DTS导入向导将此文件导入MS SQL Server。错误消息为我提供了它中断的文件的行号。固定;重复。
答案 0 :(得分:4)
去过那里,做到了。写了我自己的工具。
有多少涉嫌输出CSV的程序实际上并没有正确地这样做。
商业工具会很好,但考虑到我在CSV文件中遇到的各种问题(缺少分隔符,错误的分隔符值,字段中间的嵌入式CR / LF等),值得写我自己的。这样,当我发现一个新问题时,我只是扩展我现有的程序来处理它。
考虑到我的倾向,我应该把我的昵称改为NIH。
答案 1 :(得分:2)
我可能会用Python(或Perl或Awk)来解决问题 如果缺少分隔符,你怎么知道字段在哪里?
编辑 - 我可能会读取所有行,忽略现有的分隔符,将它们拆分为已知内容并再次写出来。你只需要这样做一次,它比获得错误和修复特定的行更快更容易。
答案 2 :(得分:1)
如果平面文件来自同一个源,我同意编写自己的工具是最好的选择之一 - 问题应该在文件之间保持一致。
OTOH,如果您一直需要从不同的提供商导入数据,那么获得导入工具可能会提高效率。
自从我完成ETL工作已经差不多十年了,所以我不能提出任何具体的建议。
顺便说一句,是否有可能重新生成平面文件?更好的解决方案是首先不要破坏数据,而不是事后清理它。答案 3 :(得分:1)
您可以尝试使用Flat File Checker来解决此问题。它允许您轻松拒绝格式错误的文件,并识别文件存在问题的行。
答案 4 :(得分:-1)
当您尝试访问数据并显示记录丢失时,会弹出这种类型的消息。星际文件修复可以让您摆脱这种腐败,在那里您可以找到所有类型的软件。