我有使用通过 BCP 命令行创建的 XML 格式文件的经验,然后将其用于只有一种记录格式的批量文件。
我的问题是,有没有办法在 XML 中插入条件语句来处理同一数据文件中的不同记录,即:
数据1 数据2 数据3
数据4 数据5 数据6 数据7 数据8
等等等等……
我查看了 XML 的架构,得出的结论是,这不是批量上传格式文件的设计目的。
提前致谢!
据我所知,没有提供支持可变列集的 SQL Server 导入方法(批量插入、BCP、SSIS 等)。绝对定义的每一列都必须在每个导入行中。
出于这个原因,处理这种(非常常见的)情况的首选方法是以下之一:
1)使用(或编写)以通用语言(VB、C# 等)编写的专用导入程序来解析文本文件,然后将其插入 SQL Server 的表中。或者,
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 列,这可以通过创建外观视图然后将导入定向到视图而不是表来轻松完成。像这样:
CREATE VIEW vImport_Staging AS SELECT RowText FROM Import_Staging;