我正在尝试解决我的csv数据如下所示的问题:
A|B|C
"Jon"|"PR | RP"|"MN"
"Pam | Map"|"Ecom"|"unity"
"What"|"is"this" happening"|"?"
也就是说,它是由管道分隔的,并且引号为文本限定符,但它在数据值中也有管道和引号。我已经尝试过了
根据评论进行更新
我试图选择|
作为分隔符和"
作为文本限定符,但在尝试将数据导入OLEDB目标时,我收到以下错误:
找不到列B的列分隔符
您必须将Column Delimiter
属性更改为|
(垂直条),将Text Qualifier
属性更改为"
中的Flat File Connection Manager
如果这些仍然不起作用,那么在平面文件源中有一些坏行,您必须使用错误输出处理:
我实际上最后编写了一个简单的脚本来删除初始和最后一个引用并设置列分隔符以引用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;
}