批量插入csv - 列值本身有逗号

时间:2014-09-22 14:14:09

标签: tsql sql-server-2012

“活动”列的值包含文本中的逗号

csv中的一些记录:

Name,Project,Activity,Hrs
John,,,7.1
,Junkie,,7.1
,,Reviewing the,file,7.1 //This is under 'Activity' column and it has a comma in the text

当我使用批量插入时,我会获得此行的批量加载数据转换。如果删除此行或删除该句中的逗号,则一切正常。

请告诉我这种情况下的选项有哪些。我有很多csv文件,每个文件都有很多这样的值。

2 个答案:

答案 0 :(得分:3)

如果我遇到这个特殊问题并且CSV文件的创建不在我的控制之下,我会使用这样的Perl脚本:

open(my $fhin, "<", "MyFile.csv");
open(my $fhout, ">", "MyQFile.csv");

while (my $line = <$fh>) {
  chomp($line);
  $line =~ s/^([^,]*),([^,]*),(.*),([^,]*)$/\"$1\",\"$2\",\"$3\",\"$4\"/;

  print $fhout $line . "\n";
}

请注意,上面的正则表达式只能处理一个&#34;问题&#34;这种专栏。如果还有其他的,则不可能以编程方式为这些列分配正确的引用(没有更多信息......)。

答案 1 :(得分:-1)

我遇到类似的问题,其中文本字符串在字符串中有逗号。我使用以下字段终止符来解决。

FIELDTERMINATOR ='\ t'

这对CSV不起作用,我不得不将文件保存为.txt。