同一格式文件中的不同记录格式 - T-SQL(批量上传 - BCP)

时间:2012-12-14 16:26:51

标签: file tsql format bcp bulk

我有使用BCP命令行创建的XML格式文件的经验,然后将其用于只有一种记录格式的批量文件。

我的问题是,有没有办法在XML中插入条件语句来处理同一数据文件中的不同记录,即:

data1 data2 data 3

data4 data5 data6 data7 data8

等等......

我已经查看了XML的架构,我得出的结论是,这不是批量上传格式文件的设计目的。

提前致谢!

1 个答案:

答案 0 :(得分:2)

据我所知,没有提供支持变量列集的SQL Server导入方法(批量插入,BCP,SSIS等)。每个定义的列绝对必须在每个导入行中。

因此,处理这种(非常常见的)情况的首选方法是:

1)使用(或编写)用通用语言(VB,C#等)编写的专用导入程序来解析文本文件,然后将其插入SQL Server表中( S)。或者,

2)使用SQL Server提供的导入方法之一(批量插入,BCP,SSIS等)将每行作为单个文本列(如NVarchar(MAX))导入到分段中表然后使用SQL将这些文本行解析为它们的实际列。 (这是我的首选方法)

上面(2)的典型临时表如下所示:

CREATE TABLE Import_Staging
(
    RowNumber INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    RowText   NVARCHAR(MAX)
);

如果你选择这条路线,如果你隐藏IDENTITY列,导入工具通常会更快乐,这可以通过创建一个Facade View然后将Import导向View而不是Table来轻松完成。像这样:

CREATE VIEW vImport_Staging AS SELECT RowText FROM Import_Staging;