2010-09-29 94 views
6

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

例子:如果我有一臺名爲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的長度?

回答

12

我認爲你需要定義格式文件

例如

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> 
+0

啊,OK。謝謝!我剛剛瞭解到我在嘗試使用批量插入時遇到此問題:消息4834,級別16,狀態4,行1 您無權使用批量加載語句。 – 2010-09-29 21:47:54

+1

你不需要格式文件位的括號嗎? WITH(FORMATFILE ='C:\ Temp \ Format.xml') – 2016-10-06 08:47:14

3

你想使用format file與您的BULK INSERT。喜歡的東西:

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