0

我们使用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

如果我们使用 theescape_char => "\\"\N替换为N

解析后的数据:

1973127,99,N

'\'此外,删除了 double 的数据

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

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

解析前:

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

解析后:

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

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

4

1 回答 1

0

您可以先清理 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 > new.csv

于 2013-09-04T15:04:56.373 回答