2010-09-29 22 views
6

Toplu Ekleme komutuyla alan uzunluklarını nasıl belirlersiniz?Sabit genişlikli alanları toplu ekleme

Örnek: Ben bir masa adında c olsaydı: \ Temp \ TableA.txt ve vardı:

123ABC 
456DEF 

Ve böyle bir tablo vardı: Sonra

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

nasıl yapardım Field1 ve Field2 için uzunlukları belirtin mi?

cevap

12

Sana bir biçim dosyası

örneğin tanımlamak gerektiğini düşünüyorum

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

Bunun çalışması için, bununla birlikte, bir Format Dosyasına ihtiyacınız vardır.

tane oluşturmadan hakkında genel bilgi için buraya bakınız:

Creating a Format File

bir tahmin olarak, Schema bakarak, böyle bir şey bunu yapabilir:

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

Ah, tamam. Teşekkürler! Toplu Ekle: Msg 4834, Düzey 16, State 4, Satır 1 Toplu yükleme deyimini kullanmaya çalıştığınızda bunu aldığımı öğrendim. –

+1

Format dosya bitinin etrafında parantezlere gerek yok mu? WITH (FORMATFILE = 'C: \ Temp \ Format.xml') –

3

BULK INSERT ile format file kullanmak isteyebilirsiniz. Bir şey gibi:

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