Aracılığıyla paylaş


(SQL Server) tablo sütun Atla için bir biçim dosyası kullanma

Biçimi dosyaları açıklanmıştır. Alanı veri dosyasında yok olduğunda tablo sütun alma atlamak için bir biçim dosyası kullanabilirsiniz. Veri dosyası can/sadece atlanan sütunlar null olduğunda, tablodaki sütun sayısından daha az alan içeren veya varsayılan değere sahip.

Örnek tablo ve veri dosyası

Aşağıdaki örnek adlı bir tablo gerektirir myTestSkipColde AdventureWorks2012örnek veritabanı altında dbo şema. Bu tablo aşağıdaki gibi oluşturun:

USE AdventureWorks2012;
GO
CREATE TABLE myTestSkipCol 
   (
   Col1 smallint,
   Col2 nvarchar(50) NULL,
   Col3 nvarchar(50) not NULL
   );
GO

Örnek veri dosyası, aşağıdaki örnekleri kullanın myTestSkipCol2.dat, üç sütun karşılık gelen tablo içerir, ancak yalnızca iki alan içerir:

1,DataForColumn3
1,DataForColumn3
1,DataForColumn3

Toplu veri alma için myTestSkipCol2.datiçine myTestSkipColtablosu, ilk veri alanı biçimi dosya eşlemeniz gerekir Col1, ikinci alana Col3, Kaptan Col2.

Olmayan xml biçimi dosyası kullanma

Tablo sütun Atla için-xml biçimi dosyası değiştirebilirsiniz. Genellikle, bu karıştırmak istimal bcpvarsayılan olmayan xml biçimi dosyası ve değiştirme varsayılan dosyasını bir metin editörü oluşturmak için yardımcı program. Değiştirilmiş dosyayı kendi karşılık gelen tablo sütunu her varolan alanları eşleştirin ve hangi tablo sütunu veya sütunları atlamak için belirtmek gerekir. Varsayılan olmayan xml veri dosyasını değiştirmek için iki seçenek vardır. Ya da alternatif veri alanı veri dosyasında yok ve hiçbir veri karşılık gelen tablo sütuna eklenir gösterir.

Varsayılan olmayan xml biçimi dosyası oluşturuluyor

Bu konu için oluşturulan varsayılan olmayan xml biçimi dosyası kullanır myTestSkipColkullanarak aşağıdaki örnek tabloda bcpkomut:

bcp AdventureWorks2012..myTestSkipCol format nul -f myTestSkipCol_Default.fmt -c -T

Önceki komut olmayan xml biçimi dosyasını oluşturur myTestSkipCol_Default.fmt. Bu biçim dosyası denilen bir varsayılan biçim dosyasını tarafından üretilen form olduğundan bcp. Genellikle, varsayılan biçimi dosyası veri dosyası alanlarını ve tablo sütunları arasında bire bir yazışma açıklar.

Güvenlik notuGüvenlik Notu

Bağlanmakta sunucu örneğinin adı belirtmeniz gerekebilir. Ayrıca, kullanıcı adını ve parolasını belirtmeniz gerekebilir. Daha fazla bilgi için, bkz. BCP yardımcı programı.

Aşağıdaki resimde, bu örnek varsayılan biçimi dosyaları için değerleri gösterir. Ayrıca her dosya biçimi alanının adı gösterilmektedir.

myTestSkipCol için varsayılan XML dışı biçim dosyası

[!NOT]

Dosya biçimi alanları hakkında daha fazla bilgi için bkz: Olmayan xml biçimi dosyaları (SQL Server).

Olmayan xml biçimi dosyası değiştirme yöntemleri

Tablo sütun Atla için varsayılan olmayan xml biçimi dosyası düzenleyin ve dosya aşağıdaki alternatif yöntemlerden birini kullanarak değiştirin:

  • Tercih edilen yöntem, üç temel adımlardan oluşur. İlk olarak, herhangi bir dosya biçimi satır veri dosyasında eksik alan açıklayan silin. Sonra "ana bilgisayar dosyası alan sırasını" azaltmak her dosya biçimi satır silinmiş satırı izleyen değeri. "Ana bilgisayar dosyası alan sıralı" hedefidir değerler, 1'den n, her bir veri alanına veri dosyasındaki gerçek konumunu yansıtır. Son olarak, "Sütun sayısı" değerini azaltmak alan alanlar veri dosyasındaki gerçek sayısını yansıtması için.

    Aşağıdaki örnek için varsayılan biçimi dosyası temel myTestSkipCol"oluşturma bir varsayılan olmayan xml biçimi dosyası içinde" oluşturulduğu tabloyu, Bu konunun önceki kısımlarında. Bu değiştirilmiş biçimi dosya, ilk veri alanı için eşler Col1, atlar Col2ve ikinci veri alanı için haritalar Col3. Satır için Col2silindi. Diğer değişiklikler kalın yazı tipiyle gösterilir:

    9.0
    2
    1       SQLCHAR       0       7       "\t"     1     Col1         ""
    2       SQLCHAR       0       100     "\r\n"   3     Col3         SQL_Latin1_General_CP1_CI_AS
    
  • Alternatif olarak, tablo sütun Atla için tablo sütununa karşılık gelen dosya biçimi satır tanımını değiştirebilirsiniz. Bu dosya biçimi satır "önek uzunluğu,", "ana bilgisayar dosyası veri uzunluğu" ve "sunucu sütun düzeni" değer 0 olarak ayarlanması gerekir. Ayrıca, "Sonlandırıcı" ve "sütun harmanlama" alanlar belirlemek, "" (BOŞ).

    "Sunucu sütun adı" gerçek sütun adı gerekli değildir ancak boş olmayan bir dize değeri gerektirir. Kalan biçimi alanları varsayılan değerlerine gerektirir.

    Aşağıdaki örnek için varsayılan biçimi dosyası da türetilmiştir myTestSkipColtablosu. 0 Veya null değerler kalın olarak gösterilir.

    9.0
    3
    1       SQLCHAR       0       7       "\t"     1     Col1         ""
    2       SQLCHAR       0       0      ""     0     Col2         ""
    3       SQLCHAR       0       100     "\r\n"   3     Col3         SQL_Latin1_General_CP1_CI_AS
    

Örnekler

Aşağıdaki örnekler de esas alan myTestSkipColörnek tablo ve myTestSkipCol2.dat, "örnek tablo ve veri dosyasında," oluşturulan örnek veri dosyası Bu konunun önceki kısımlarında.

bulk INSERT kullanma

Bu örnekte "Yöntemleri için değiştirme bir olmayan xml biçimi dosyasında," oluşturulan değiştirilmiş olmayan xml biçimi dosyaları kullanarak çalışır. Bu konunun önceki kısımlarında. Örneğin, değiştirilmiş dosyayı adli C:\myTestSkipCol2.fmt. Kullanmak için BULK INSERTiçin toplu alma myTestSkipCol2.datveri dosyası, içinde SQL Server Management Studiosorgu Düzenleyicisi, aşağıdaki kodu yürütün:

USE AdventureWorks2012;
GO
BULK INSERT myTestSkipCol 
   FROM 'C:\myTestSkipCol2.dat' 
   WITH (FORMATFILE = 'C:\myTestSkipCol2.fmt');
GO
SELECT * FROM myTestSkipCol;
GO

xml biçimi dosyası kullanma

xml biçimi dosyası ile doğrudan tabloya kullanarak aldığınız zaman sütun atlayamazsınız bir bcpkomutunu veya bulk INSERT deyimi. Ancak, tüm ama son sütun tablonun içine alabilirsiniz. Ama son sütunun herhangi bir atlamak zorunda kalırsanız, görünüm yalnızca veri dosyasındaki sütun içeren hedef tablo oluşturmanız gerekir. Sonra görünüme dosya veri alma toplu.

openrowset(bulk...) kullanarak tablo sütun Atla için bir xml biçimi dosyası kullanmak için sen-si olmak-e açık listesi seçin listesinde ve ayrıca hedef tablodaki sütun gibi sağlamak:

EKLE...<column_list> seçin <column_list> dan openrowset(bulk...)

Varsayılan xml biçimi dosyası oluşturuluyor

Değiştirilmiş biçimi dosyaları örnekleri esas alan myTestSkipCol, "örnek tablo ve veri dosyasında," oluşturulan örnek tablo ve veri dosyası Bu konunun önceki kısımlarında. Aşağıdaki bcpkomutu için bir varsayılan xml biçimi dosyası oluşturur myTestSkipColtablosu:

bcp AdventureWorks2012..myTestSkipCol format nul -f myTestSkipCol_Default.xml -c -x -T

Elde edilen varsayılan olmayan xml biçimi dosyası veri dosyası alanlarını ve tablo sütunları arasında bire bir yazışma şöyle açıklar:

<?xml version="1.0"?>
<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="Col1" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Col2" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="Col3" xsi:type="SQLNVARCHAR"/>
 </ROW>
</BCPFORMAT>

[!NOT]

xml biçimi dosyaları yapısı hakkında daha fazla bilgi için bkz: xml biçimi dosyaları (SQL Server).

Örnekler

Bu örnekler bölümünde kullanım myTestSkipColörnek tablo ve myTestSkipCol2.dat, "örnek tablo ve veri dosyasında," oluşturulan örnek veri dosyası Bu konunun önceki kısımlarında. Verileri almak için myTestSkipCol2.datiçine myTestSkipColtablo örneklerini kullanın güncellenmiştir şu xml biçimi dosyası, myTestSkipCol2-x.xml. Bu "Oluşturma bir varsayılan xml biçimi dosyasında," oluşturulduğu biçim dosyasını temel alır Bu konunun önceki kısımlarında.

<?xml version="1.0"?>
<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="Col1" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Col3" xsi:type="SQLNVARCHAR"/>
 </ROW>
</BCPFORMAT>

openrowset(bulk...) kullanma

Aşağıdaki örnek OPENROWSETtoplu satır kümesi sağlayıcı ve myTestSkipCol2.xmlbiçimi dosyası. Örnek toplu ithalat myTestSkipCol2.datveri dosyası içine myTestSkipColtablosu. Deyimi seçme listesinde ve gerektiği gibi hedef tablodaki sütun açık bir listesini içerir.

De SQL Server Management Studiosorgu Düzenleyicisi, aşağıdaki kodu yürütün:

USE AdventureWorks2012;
GO
INSERT INTO myTestSkipCol
  (Col1,Col3)
    SELECT Col1,Col3
      FROM  OPENROWSET(BULK  'C:\myTestSkipCol2.Dat',
      FORMATFILE='C:\myTestSkipCol2.Xml'  
       ) as t1 ;
GO

Toplu almayı bir görünüm kullanma

Aşağıdaki örnek oluşturur v_myTestSkipColüzerine myTestSkipColtablosu. Bu görünüm ikinci tablo sütununda atlar Col2. Sonra örnek kullanır BULK INSERTalmak myTestSkipCol2.datBu görünümü veri dosyasına.

De SQL Server Management Studiosorgu Düzenleyicisi, aşağıdaki kodu yürütün:

CREATE VIEW v_myTestSkipCol AS
    SELECT Col1,Col3
    FROM myTestSkipCol;
GO

USE AdventureWorks2012;
GO
BULK INSERT v_myTestSkipCol
FROM 'C:\myTestSkipCol2.dat'
WITH (FORMATFILE='C:\myTestSkipCol2.xml');
GO

Ayrıca bkz.

Başvuru

BCP yardımcı programı

BULK INSERT (Transact-SQL)

OPENROWSET (Transact-SQL)

Kavramlar

Atla veri alanı (SQL Server) için bir biçim dosyası kullanma

Tablo Sütunlar veri dosyası alanlarını (SQL Server) eşlemek için bir biçim dosyası kullanma

(SQL Server) Veri Al toplu için bir biçim dosyası kullanma