使用Text::CSV_XS perl模块解析带有换行符的CSV



我们使用Text::CSV_XS module来解析CSV,并提供以下选项:

my $csv = Text::CSV_XS->new ({ 
                              binary=> 1, eol => "n", 
                              allow_loose_quotes => 1, 
                              allow_loose_escapes=> 1,
                              escape_char => "\" 
                            });

CSV是使用mysql LOAD DATA infile创建的。如果存在NULL值,则MYSQL将字段中的N相加

分析数据前:

1973127,99,N

如果我们使用escape_char => "\",则N将替换为N

解析后的数据:

1973127,99,N

此外,具有双''的数据被去除

例如:D\'Mello更改为D'Mello

如果我们删除escape_char => "\",则数据将更改,如下所示

解析前:

1539190,125,"" SHIDDH - SHILA "
"126"

解析后:

1539190,125,\" SHIDDH - SHILA \"\n\"126

解决这个问题的最佳方法是什么?

您可以先清理CSV文件。

#!/usr/bin/perl
use strict;
use warnings;
my $file = shift;
open CSV, "<$file" or die;
foreach my $line (<CSV>) {
    $line =~ s/\N/NULL/g;
    print $line;
}
close CSV;

perl cleanup.pl my.csv>新.csv

相关内容

  • 没有找到相关文章

最新更新