【发布时间】:2012-04-01 23:07:13
【问题描述】:
我使用 SQL Server 2008 并且有一个包含 5 个字符类型列的表。
CREATE TABLE [dbo].[deviceDataBulk](
[f1] [char](9) NULL,
[f2] [char](5) NULL,
[f3] [char](7) NULL,
[f4] [char](7) NULL,
[f5] [char](6) NULL)
我还有一个bcp格式的文件;
<RECORD>
<FIELD ID="1" xsi:type="CharFixed" LENGTH="9" COLLATION="Turkish_CI_AS"/>
<FIELD ID="2" xsi:type="CharFixed" LENGTH="5" COLLATION="Turkish_CI_AS"/>
<FIELD ID="3" xsi:type="CharFixed" LENGTH="7" COLLATION="Turkish_CI_AS"/>
<FIELD ID="4" xsi:type="CharFixed" LENGTH="7" COLLATION="Turkish_CI_AS"/>
<FIELD ID="5" xsi:type="CharFixed" LENGTH="6" COLLATION="Turkish_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="f1" NULLABLE="YES" xsi:type="SQLCHAR"/>
<COLUMN SOURCE="2" NAME="f2" NULLABLE="YES" xsi:type="SQLCHAR"/>
<COLUMN SOURCE="3" NAME="f3" NULLABLE="YES" xsi:type="SQLCHAR"/>
<COLUMN SOURCE="4" NAME="f4" NULLABLE="YES" xsi:type="SQLCHAR"/>
<COLUMN SOURCE="5" NAME="f5" NULLABLE="YES" xsi:type="SQLCHAR"/>
</ROW>
我的数据文件包含固定长度的字符数据,每行没有字段终止符。因此,一整行的长度为 34 个字符。
我的问题是字段 4 和字段 5 可能不存在于每一行。我在该文件中可能有 21 个字符长行或 28 个字符长行。
不存在字段 5 存在而字段 4 不存在的情况。
文本文件的可能场景是 ;
f1 f2 f3 f4 f5
f1 f2 f3 f4
f1 f2 f3
我无法使用BULK INSERT 插入此文件。我希望BULK INSERT 在没有这些字段时插入空值,如果工具到达行尾,只需为其余字段插入空值。
【问题讨论】:
标签: sql-server bulkinsert bcp