Aracılığıyla paylaş


Tablo sütun Atla için bir biçim dosyası kullanma

Bu konuda biçimi dosyaları anlatılmaktadır.Tablo alma atlamak için bir biçim dosyası kullanma sütun ne zaman alan mevcut değil veri dosyasında.Veri dosyası sütun sayısından daha az alan içerebilir, tablo ve/yalnızca atlanan sütunlar null veya varsayılan değere sahip.

Örnek tablo ve veri dosyası

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

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

Aşağıdaki örnekler, örnek veri dosyası kullanmak 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 alma verileri için myTestSkipCol2.dat içine myTestSkipCol tablo, için ilk veri alanı biçimi dosya eşleşmesi gereken Col1, ikinci alan için Col3, atlama Col2.

Olmayan xml biçimi dosyası kullanma

xml olmayan değiştirebilirsiniz biçim dosyası bir tablo sütun Atla için.Genelde, bu işlem kullanarak içerir bcp bir varsayılan olmayan xml oluşturmak için yardımcı biçim dosyası ve varsayılan dosyayı bir metin düzenleyicide düzenlemek.Değiştirilmiş biçim dosyası karşılık gelen tablo sütununa her varolan alanları eşleştirin ve hangi tablo veya atlamak için birden fazla sütunu göstermek gerekir.Varsayılan olmayan xml veri dosyasını değiştirmek için iki seçeneğiniz vardır.Ya da alternatif veri alan veri dosyasında yok ve hiçbir veri karşılık gelen içine eklenir gösterir tablo sütun.

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

Bu konuda varsayılan olmayan xml kullanan biçim dosyası için oluşturulmuş myTestSkipCol kullanarak aşağıdaki örnek tablo bcp komut:

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

xml olmayan bir önceki komutu oluşturur biçim dosyası, myTestSkipCol_Default.fmt.Bu biçim dosya adında bir Varsayılan biçim dosyası tarafından oluşturulan form olduğundan bcp.Genellikle, bir varsayılan biçim dosyası tablo sütunlar veri dosyası alanlarını arasındaki bire bir benzerliği açıklar.

Güvenlik notuGüvenlik Notu

Sunucu adını belirtmek olabilir örnek , Bağlanmakta olduğunuz için.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ı değerleri gösterir.Resimde de her dosya biçimini alan adını gösterir.

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ı anlama.

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

Tablo sütun Atla için varsayılan olmayan xml düzenleme biçim dosyası dosyasını ve alternatif aşağıdaki yöntemlerden birini kullanarak değiştirebilirsiniz:

  • Tercih edilen yöntem üç temel adımlardan oluşur.İlk olarak, veri dosyasında eksik alan tanımlayan herhangi bir biçim dosyasını satırına silin.Daha sonra "ana bilgisayar dosyası alan sırasını" azaltmak Silinen satır izleyen her dosya biçimi satır değeri.Amaç "ana bilgisayar dosyası alan sıralı" sağlamaktır. değerleri, 1'den n, her veri alan veri dosyasındaki gerçek konumunu yansıtır.Son olarak, "sütun sayısı içindeki" değerini azaltın alanları veri dosyasındaki gerçek sayısını yansıtması için alan sağlar.

    Aşağıdaki örnek için varsayılan biçim dosyası temel alan myTestSkipCol "bir varsayılan olmayan xml biçimi dosyası oluşturulurken," oluşturulduğu tablo Bu konunun önceki kısımlarında.Bu değişiklik biçim dosyası ilk veri alan için haritalar Col1, atlar Col2ve ikinci veri alan için haritalar Col3.Satır için Col2 silindi.Başka değişiklikler kalın yazı tipinde 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 içinde "önek uzunluğu" "ana bilgisayar dosyası veri uzunluğu" ve "sunucu sütun sırası" değerler olmalı küme 0.Ayrıca, "Sonlandırıcı" ve "sütun harmanlama" alanları olması küme için "" (NULL).

    "Sunucu sütun adı" Gerçek sütun adı gerekli olmasa da bazı boş olmayan bir dize değeri gerektirir.Kalan biçim alanları varsayılan değerlerine gerektirir.

    Aşağıdaki örnek de için varsayılan biçim dosyası türetilir myTestSkipCol tablo.0 Veya null olmalıdır değerleri 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ı," 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ı içinde" oluşturulan değiştirilmiş olmayan-xml biçimi dosyaları kullanarak çalışır. Bu konunun önceki kısımlarında.In this example, the modified format file is named C:\myTestSkipCol2.fmt.Kullanmak için BULK INSERT Toplu alma için myTestSkipCol2.dat veri dosyası SQL Server Management Studio Query Editor yürütmek aşağıdaki kodu:

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

Bir xml biçimi dosyası kullanma

Bir xml biçimi dosyası doğrudan'a içe aktarırken bir sütun atlayamazsınız bir tablo kullanarak bir bcp komutunu veya bulk INSERT deyim.Ancak, son dışındaki tüm içe aktarabilirsiniz sütun bir tablo.Herhangi ancak son sütun atlamak varsa, hedef bir görünümünü oluşturmak tablo yalnızca veri dosyasındaki sütunlar içerir.Daha sonra aşağıdakileri yapabilirsiniz toplu alma görünüm içine bu dosyadaki verileri.

xml kullanmak için biçim dosyası openrowset(bulk...) kullanarak bir tablo sütun Atla için açık seçim listesi ve ayrıca hedef tablodaki sütunların listesi aşağıdaki gibi girmeniz gerekir:

Ekle...<column_list> seçin <column_list> Dan openrowset(bulk...)

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

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

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

Varsayılan olmayan xml sonuç biçim dosyası tablo sütunlar veri dosyası alanlarını arasındaki bire bir ilişkisi şö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ı anlama.

Örnekler

Bu örnekler bölümünde kullanım myTestSkipCol örnek tablo ve myTestSkipCol2.dat "örnek tablo ve veri dosyası," oluşturulan örnek veri dosyası Bu konunun önceki kısımlarında.Verilerin içe aktarılacağı kaynak myTestSkipCol2.dat içine myTestSkipCol tablo, örnekler aşağıdaki değiştirilmiş xml biçimi dosyası kullanma myTestSkipCol2-x.xml.Bu, "Bir varsayılan xml biçimi dosyası oluşturulurken," oluşturulan biçim dosyası 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 OPENROWSET bulk satır kümesi sağlayıcı ve myTestSkipCol2.xml biçim dosyası.Örnek toplu alır myTestSkipCol2.dat veri dosyası içine myTestSkipCol tablo.Açık bir seçim listesi ve ayrıca hedef sütunlar listesi içeren tablo, gerektiği gibi.

De SQL Server Management Studio Query Editor yürütmek aşağıdaki kodu:

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

Toplu alma üzerinde bir görünüm kullanma

Aşağıdaki örnek oluşturur v_myTestSkipCol , myTestSkipCol tablo.Bu görünüm ikinci atlar tablo sütun, Col2.Daha sonra bu örnek kullanır BULK INSERT almak myTestSkipCol2.dat veri dosyasına bu görünümü.

De SQL Server Management Studio Query Editor yürütmek aşağıdaki kodu:

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

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