我正在尝试导入一个文本文件,其中制表符分隔,文本限定符是双引号。 我正在关注指南: http://www.ideaexcursion.com/2008/11/12/handling-embedded-text-qualifiers/
我想要关注文字
"655295" "Keisuke" "" "Ueda" "1-2-2, Central Park East F201" "Utase, Mihama-Ku"
转换为
"655295","Keisuke","","Ueda","1-2-2, Central Park East F201","Utase, Mihama-Ku"
我尝试了派生列转换,但它没有帮助。我尝试过脚本组件,但那也没有用。有人可以帮帮我吗。
提前谢谢!!
答案 0 :(得分:0)
我在脚本组件中使用了以下代码:
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
/*
* Add your code here
*/
String inputString = Row.line.ToString();
int count = Row.line.Split('"').Length - 1;
int counter = 1;
while (counter < count)
{
if (counter % 2 == 0)
{
int StartIndex = GetNthIndex(inputString.ToString(), Convert.ToChar("\""), counter);
int EndIndex = GetNthIndex(inputString.ToString(), Convert.ToChar("\""), counter + 1);
inputString = inputString.ToString().Substring(0, StartIndex + 1) + "," +
inputString.ToString().Substring(EndIndex);
}
else
{
}
counter = counter + 1;
}
Row.OutputLine = inputString;
}
int GetNthIndex(string s, char t, int n)
{
int count = 0;
for (int i = 0; i < s.Length; i++)
{
if (s[i] == t)
{
count++;
if (count == n)
{
return i;
}
}
}
return -1;
}
答案 1 :(得分:0)
获取变量并将字符串存储在变量中。
然后使用派生列使用字符串函数作为
REPLACE(@user:Variable1,"\" \"","\",\"")
这适用于您的问题......
答案 2 :(得分:0)
您可以按照以下步骤实现: -
1)在平面文件连接管理器中,请执行以下操作将其配置为每行只能获得一列 - 一世。不要放任何“文本限定符” II。行分隔符= {CR} {LF} III。 Modifey Column delimited = {CR}并刷新metadeta,这样您将只能看到一列。请给它一个具体的名称,我现在将它称为“Col”。
2)添加派生列转换并将表达式设为 “(DT_STR,100,1252)REPLACE(Col,”\“\”“,”\“,\”“)”。您将在新列中获得以下所需的输出 -
"655295","Keisuke","","Ueda","1-2-2, Central Park East F201","Utase, Mihama-Ku"
您可以将此输出放在不同的平面文件中,并使用不同的DFT或包将该文件导入表中,或者您可以添加脚本组件将其拆分为不同的列,以便您可以使用相同的DFT将数据导入表中。 / p>