在 SSIS 中脚本组件的脚本中,我尝试从平面文件创建一条记录,如下所示:
起始数据:
HEADER|INVOICE_1|INVOICE_DATE|VENDOR_ID|
DETAIL|SKU|DESCRIPTION|AMOUNT|
DETAIL|SKU|DESCRIPTION|AMOUNT|
HEADER|INVOICE_2|INVOICE_DATE|VENDOR_ID|
DETAIL|SKU|DESCRIPTION|AMOUNT|
HEADER|INVOICE_3|INVOICE_DATE|VENDOR_ID|
DETAIL|SKU|DESCRIPTION|AMOUNT|
最终结果:
HEADER|INVOICE_1|INVOICE_DATE|VENDOR_ID|SKU|DESCRIPTION|AMOUNT|
HEADER|INVOICE_1|INVOICE_DATE|VENDOR_ID|SKU|DESCRIPTION|AMOUNT|
HEADER|INVOICE_2|INVOICE_DATE|VENDOR_ID|SKU|DESCRIPTION|AMOUNT|
HEADER|INVOICE_3|INVOICE_DATE|VENDOR_ID|SKU|DESCRIPTION|AMOUNT|
最终结果将映射到 SSIS 中的 OLE DB 目标。
我最初编写脚本以使用 StreamReader 将每个线型(标题、详细信息)拉为组输出,但很快意识到没有标识符可以将它们重新连接在一起。
这是我目前写的:
System.IO.StreamReader reader = new System.IO.StreamReader(this.Variables.varFileName);
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
string[] items = line.Split('|');
// HEADER = 000
if (items[0] == "000")
{
HeaderBuffer.AddRow();
HeaderBuffer.H1 = items[0];
HeaderBuffer.H2 = items[1];
HeaderBuffer.H3 = items[2];
HeaderBuffer.H4 = items[3];
HeaderBuffer.H5 = items[4];
HeaderBuffer.H6 = items[5];
HeaderBuffer.H7 = items[6];
HeaderBuffer.H8 = items[7];
HeaderBuffer.H9 = items[8];
HeaderBuffer.H10 = items[9];
HeaderBuffer.H11 = items[10];
HeaderBuffer.H12 = items[11];
HeaderBuffer.H13 = items[12];
}
// DETAIL = 001
else if (items[0] == "001")
{
DetailBuffer.AddRow();
DetailBuffer.D1 = items[0];
DetailBuffer.D2 = items[1];
DetailBuffer.D3 = items[2];
DetailBuffer.D4 = items[3];
DetailBuffer.D5 = items[4];
DetailBuffer.D6 = items[5];
}
}
预先感谢您的所有帮助!如果您有任何问题,请告诉我。