我有使用BCP命令行创建的XML格式文件的经验,然后将其用于只有一种记录格式的批量文件。
我的问题是,有没有办法在XML中插入条件语句来处理同一数据文件中的不同记录,即:
data1 data2 data 3
data4 data5 data6 data7 data8
等等......我已经查看了XML的架构,我得出的结论是,这不是批量上传格式文件的设计目的。
提前致谢!
答案 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;