批量插入固定宽度字段

时间:2010-09-29 21:13:21

标签: sql-server sql-server-2005

如何使用批量插入命令指定字段长度?

示例:如果我有一个名为c:\ Temp \ TableA.txt的表,它有:

123ABC
456DEF

我有一张桌子如:

use tempdb
CREATE TABLE TABLEA(
Field1 char(3),
Field2 char(3)
)
BULK INSERT TableA FROM 'C:\Temp\TableA.txt'
SELECT * FROM TableA

那么我如何指定Field1和Field2的长度?

2 个答案:

答案 0 :(得分:12)

我认为您需要定义格式文件

e.g。

BULK INSERT TableA FROM 'C:\Temp\TableA.txt'
WITH FORMATFILE = 'C:\Temp\Format.xml'
SELECT * FROM TableA

为了实现这一点,显然你需要一个格式文件。

有关创建一个的一般信息,请参阅此处:

Creating a Format File

猜测,从查看Schema,这样的事情可能会这样做:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
  <FIELD ID="1" xsi:type="CharFixed" LENGTH="3"/>
  <FIELD ID="2" xsi:type="CharFixed" LENGTH="3"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="Field1" xsi:type="SQLCHAR" LENGTH="3"/>
  <COLUMN SOURCE="2" NAME="Field2" xsi:type="SQLCHAR" LENGTH="3"/>
</ROW>
</BCPFORMAT>

答案 1 :(得分:3)

您希望format fileBULK INSERT一起使用{{3}}。类似的东西:

9.0
2
1     SQLCHAR     0     03     ""         1     Field1          ""
2     SQLCHAR     0     03     "\r\n"     2     Field2          ""