大容量插入固定宽度的字段大容量插入固定宽度的字段(Bulk insert fixed width f

2019-05-12 06:35发布

如何与大容量插入命令中指定字段长度?

例如:如果我有一个名为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

然后,我怎么会指定字段1和Field2的长度?

Answer 1:

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

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

对于工作,不过,你需要一个格式文件,效果显着。

看到这里了解如何创建一个基本信息:

创建格式文件

在猜测,从看模式 ,这样的事情可能做到这一点:

<?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>


Answer 2:

你想使用一个格式文件与BULK INSERT 。 就像是:

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


文章来源: Bulk insert fixed width fields