我正在尝试解决csv数据如下所示的问题:
A|B|C
"Jon"|"PR | RP"|"MN"
"Pam | Map"|"Ecom"|"unity"
"What"|"is"this" happening"|"?"
也就是说,它是用竖线分隔的,并带有引号作为文本限定符,但是在数据值中也带有竖线和引号。我已经尝试过
根据评论进行更新
我尝试选择|
作为分隔符,选择"
作为文本限定符,但是当尝试将数据导入OLEDB Destination时,出现以下错误:
找不到列B的列定界符
答案 0 :(得分:2)
您必须在Column Delimiter
内将|
属性更改为Text Qualifier
(竖线),并将"
属性更改为Flat File Connection Manager
如果这些仍然不起作用,则平面文件源中有一些不良行,必须使用错误输出来处理:
答案 1 :(得分:0)
实际上,我最终写了一个c锋利的脚本来删除开头和结尾的引号,并在SSIS中将列定界符设置为引用管道引号(“ |”)。代码如下:
public void Main()
{
String folderSource = "path";
String folderTarget = "path";
foreach (string file in System.IO.Directory.GetFiles(folderSource))
{
String targetfilepath = folderTarget + System.IO.Path.GetFileName(file);
System.IO.File.Delete(targetfilepath);
int icount = 1;
foreach (String row in System.IO.File.ReadAllLines(file))
{
if (icount == 1)
{
System.IO.File.AppendAllText(targetfilepath, row.Replace("|", "\"|\""));
}
else
{
System.IO.File.AppendAllText(targetfilepath, row.Substring(1, row.Length - 2));
}
icount = icount + 1;
System.IO.File.AppendAllText(targetfilepath, Environment.NewLine);
}
}
Dts.TaskResult = (int)ScriptResults.Success;
}