Sql server 2008 如何创建.fmt文件,并将数据从混合输入文件导出到多个表中

Sql server 2008 如何创建.fmt文件,并将数据从混合输入文件导出到多个表中,sql-server-2008,import,bcp,Sql Server 2008,Import,Bcp,我正在尝试使用bcp实用程序设置.fmt文件。在此之前,我已经成功地创建了这个(使用数据导出到的表作为输入): bcp cmsDatabase.dbo.Table1格式nul-T-c-f Table1格式fmt 9.0 3 1 SQLCHAR 0 12 "\t" 1 Col1_Table1 "" 2 SQLCHAR 0 100 "\t" 2 Col2_Table1

我正在尝试使用bcp实用程序设置.fmt文件。在此之前,我已经成功地创建了这个(使用数据导出到的表作为输入):

bcp cmsDatabase.dbo.Table1格式nul-T-c-f Table1格式fmt

9.0
3
1       SQLCHAR       0       12      "\t"     1     Col1_Table1      ""
2       SQLCHAR       0       100     "\t"     2     Col2_Table1      SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR       0       0       "\t"     3     Col3_Table1      SQL_Latin1_General_CP1_CI_AS
创建它的表1: Col1_Table1 int(主键) Col2_表1 nvarchar(50) Col3_表1 nvar

现在我面临一个问题。我有一个input.txt/.csv文件(带分隔符的平面文件),其中的数据不会直接导入到一个表中,它必须进入多个表中(一个直接进入行,其他数据需要输入到表2的列中),示例输入文件的数据:

"Col1_Table1x" "Col2_Table1x" "Col3_Table1x" "Col1_Table2x, Col1_Table2y, Col1_Table2z"
更新: 在上述文件中,值必须进入:

Col1_Tablex -> Col1_Table1 column of Table1
Col2_Tablex -> Col2_Table1 column of Table1
Col3_Table1x ->  Col3_Table1 column of Table1
表1:

Col1_Table1   Col2_Table1   Col3_Table1
-------------------------------------------
Col1_Table1x   Col2_Table1x   Col3_Table1x
在这里之前,我可以让它工作

我想弄明白的是:

“Col1_Table2,Col1_Table2,Col1_Table2,…”->将多个记录放置在表2中,用逗号分隔的值填充Col_Table2,以及 使用Col1_Table1作为外键

i、 e表2应该有

    Col1_Table1      Col1_Table2
----------------------------------------------
    Col1_Table1x    Col1_Table2x
    Col1_Table1x    Col1_Table2y
    Col1_Table1x    Col1_Table2z
其中Col1_Table2需要作为行进入Table2(用逗号分隔),而Col1_Table1是Table2的外键,因此也需要复制它

有没有办法创建一个.fmt文件,允许复制这种混合输入


其他详细信息:每次需要从这个输入文件加载表时,我都可以截断所有旧数据并重新填充。任何列都可以具有特殊字符,如如果数据量较小/中等,那么您可以简单地将数据导入一个暂存表,然后在不同的步骤中导入两个表

此外,您还可以使用两个不同格式的文件跳过数据文件中的几列,并使用它们插入到不同的表中,从而跳过其他表中的列


对于特殊字符,解决这个问题的唯一好方法是使用多个列分隔符。我从事音乐行业,因此有时我会使用3个不同的列分隔符来正确导入数据。

感谢您提供的链接。我喜欢将数据放入临时表的想法,该临时表用于导入其他两个实际表。我将只提供一个输入文件,因此我主要关心的是是否有办法将“Col1_Table2,Col1_Table2,…”中的所有数据分别放入不同的行/另一个表中?我也可以创建两个格式文件,一个如问题中所述,另一个基于另一个表。还有办法知道哪些数据需要进入哪些表吗?>>还有办法知道哪些数据需要进入哪些表吗?您需要确定这些信息,我们不能通过编程来确定。我对我的问题进行了一些编辑。文件输入是相同的,表2的行以逗号分隔,其他行以制表符/引号分隔。