Aracılığıyla paylaş


Boşlara tutmak veya varsayılan değerleri, toplu alma sırasında kullanma

Varsayılan olarak, verileri bir tabloya alındığında Kullanımıbcp komut ve BULK INSERT deyim tablodaki sütun için tanımlanmış olan tüm varsayılan ayarları inceleyin.Örneğin, sütun için varsayılan değer, bunun yerine bir veri dosyasında null bir alan varsa, yüklenir.The bcp command and BULK INSERT deyim both allow you to specify that nulls values be retained.

Buna ek olarak, normal bir INSERT deyim, varsayılan değer eklemek yerine null değer korur.Ekle...SELECT * FROM OPENROWSET(BULK...) deyim normal INSERT temel davranışı sağlar, ancak buna ek olarak, varsayılan değerleri eklemek için bir tablo ipucu destekler.

Not

Tablo sütun Atla örnek biçimi dosyaları için bkz: biçim dosyası kullanarak bir tablo sütun Atla.

Örnek tablo ve veri dosyası

Bu konudaki örneklerde çalıştırmak için örnek tablo ve veri dosyası oluşturmanız gerekir.

Örnek tablo

Örnekler, bir tablo adı gerektirir. MyTestDefaultCol2 oluşturulmasıAdventureWorks örnek veritabanınıdbo şema.To create this table, in Microsoft SQL Server Management Studio Query Editor, execute:

USE AdventureWorks;
GO
CREATE TABLE MyTestDefaultCol2 
(Col1 smallint,
Col2 nvarchar(50) DEFAULT 'Default value of Col2',
Col3 nvarchar(50) 
);
GO

Ikinci sütun, tablo, bildirim Col2, bir varsayılan değere sahip.

Örnek biçim dosyası

Bazı toplu alma örnekleri olmayan XML biçimi dosyasını kullanın. MyTestDefaultCol2-f-c.Fmt çok tam olarak karşılık gelen MyTestDefaultCol2 TABLO. Adresinde bu biçim dosyası oluşturmak için Microsoft Windows komut istemi girin:

bcp AdventureWorks..MyTestDefaultCol2 format nul -c -f C:\MyTestDefaultCol2-f-c.Fmt -t, -r\n -T

Biçimi dosyaları oluşturma hakkında daha fazla bilgi için bkz: Bir biçim dosyası oluşturuluyor.

Örnek veri dosyası

Örnek bir örnek veri dosyasını kullanır. MyTestEmptyField2-c.Dat, ikinci alana hiçbir değer içerir. The MyTestEmptyField2-c.Dat data file contains the following records.

1,,DataField3
2,,DataField3

null değerleri Kullanımıbcp veya BULK INSERT tutma

Boş alan veri dosyasındaki tablo sütunları için varsayılan değer (varsa) devralmasını yerine toplu alma işlemi sırasında null değerini tutar aşağıdaki niteleyicileri belirtin.

Komutu

Niteleyici

Niteleyici türü

Kullanımıbcp

-k

Anahtarı

TOPLU EKLEME

keepnulls1

Bağımsız değişken

1 Varsayılan değerler, yoksa BULK INSERT için tablo sütun null değerlere izin vermek üzere tanımlanmış olmalıdır.

Not

Bu niteleyiciler VARSAYıLAN tablo tanımları, toplu alma komutlar denetimi devre dışı bırakın.Ancak, aynı anda bir INSERT deyimleri, DEFAULT tanımları beklenir.

Daha fazla bilgi için bkz: Kullanımıbcp yardımcı programı ve BULK INSERT (Transact-SQL).

Örnekler

Bu bölüm toplu örnekleri kullanarak alma Kullanımıbcp veya BULK INSERT ve null değerleri tut.

Ikinci tablo sütun col2, varsayılan değer var.Veri dosyasının karşılık gelen alan boş bir dize içerir.Varsayılan olarak, zaman Kullanımıbcp veya BULK INSERT bu veri dosyasından veri almak için kullanılırMyTestDefaultCol2 tablo, varsayılan değericol2 eklenir, aşağıdaki sonucu üretir:

1

Default value of Col2

DataField3

2

Default value of Col2

DataField3

Eklemek için "NULL"yerine"Default value of Col2", kullanmanız gereken -k anahtarı ya da gösterildiği gibi aşağıdaki KEEPNULL seçeneğiKullanımıbcp ve örnekler BULK INSERT.

Kullanımıbcp ve tutma null değerleri kullanma

Aşağıdaki örnek, null değerler tutulacağı gösterilmiştir bir Kullanımıbcp komutu.The bcp command contains the following switches:

Anahtarı

Açıklama

-f

Komut biçim dosyası kullandığını belirtir.

-k

Boş sütunlar içeren herhangi bir varsayılan değeri eklenen sütunlar yerine işlemi sırasında boş (null) değer korumak belirtir.

-T

Kullanımıbcp yardımcı programı bağlandığı olduğunu belirtir. SQL Server güvenilen bir bağlantıyla.

Windows komut istemi isteminde girin.

bcp AdventureWorks..MyTestDefaultCol2 in C:\MyTestEmptyField2-c.Dat -f C:\MyTestDefaultCol2-f-c.Fmt -k -T

Null değerler tutma ve BULK ıNSERT'ni kullanma

Aşağıdaki örnek, BULK INSERT deyiminde KEEPNULLS seçeneği nasýl kullanýlacaðýný gösterir.Bir sorgu aracından gibi SQL Server Management Studio Sorgu Düzenleyicisi'nde, yürütün:

USE AdventureWorks;
GO
BULK INSERT MyTestDefaultCol2
   FROM 'C:\MyTestEmptyField2-c.Dat'
   WITH (
      DATAFILETYPE = 'char',
      FIELDTERMINATOR = ',',
      KEEPNULLS
   );
GO

Varsayılan değerleri ile INSERT tutma...SEÇİN * openrowset(bulk...) GELEN

Varsayılan olarak, toplu yükleme işleminde belirtilen herhangi bir sütun tarafından INSERT NULL'A ayarla...SEÇİN * openrowset(bulk...) GELEN.Ancak, veri dosyasında boş bir alan için ilgili tablo sütun varsayılan değer (varsa) kullanacağını belirtebilirsiniz.Varsayılan değerleri kullanmak için aşağıdakileri belirtin: tablo ipucu:

Komutu

Niteleyici

Niteleyici türü

EKLE...SEÇİN * openrowset(bulk...) GELEN

with(keepdefaults)

Tablo ipucu

Örnekler

Aşağıdaki Ekle...SELECT * FROM OPENROWSET(BULK...) örnek olarak toplu veri alır ve varsayılan değerlerini korur.

Örnekleri çalıştırmak için oluşturmak için gereken MyTestDefaultCol2 örnek tabloMyTestEmptyField2-c.Dat veri dosyasını ve kullanım bir biçim dosyası MyTestDefaultCol2-f-c.Fmt. Bu örnek oluşturma hakkında daha fazla bilgi için bu konunun önceki kısımlarında "Örnek tablo ve veri dosyası," "konusuna bakın.

Ikinci tablo sütun col2, varsayılan değer var.Veri dosyasının karşılık gelen alan boş bir dize içerir.INSERT...SELECT * FROM OPENROWSET(BULK...) içe aktarma alanlarını bu veri dosyasına MyTestDefaultCol2 Tablo NULL varsayılan olarak eklenir.col2 yerine, varsayılan değer.Bu varsayılan davranış, aşağıdaki sonucu üretir:

1

NULL

DataField3

2

NULL

DataField3

Varsayılan değer eklemek için "Default value of Col2", yerine"NULL", aşağıdaki örnekte gösterildiği gibi KEEPDEFAULTS tablo ipucu, kullanmanız gerekir. Bir sorgu aracından gibi SQL Server Management Studio Sorgu Düzenleyicisi'nde, yürütün:

USE AdventureWorks;
GO
INSERT INTO MyTestDefaultCol2
    WITH (KEEPDEFAULTS)
    SELECT *
      FROM OPENROWSET(BULK  'C:\MyTestEmptyField2-c.Dat',
      FORMATFILE='C:\MyTestDefaultCol2-f-c.Fmt'     
      ) as t1 ;
GO