(SQL Server) toplu alma işlemi sırasında NULL veya UseDefault değerleri tutmak

Varsayılan olarak, bir tabloya veri alındığında bcpkomutu ve bulk INSERT deyimi gözlemlemek tablosundaki sütunlar için tanımlanan tüm Varsayılanları. Örneğin, bir veri dosyasında boş bir alan varsa, sütun için varsayılan değer yerine yüklenir. bcpKomutu ve bulk INSERT deyimi bırakmak sen-e doğru NULL değerlerin korunacağını belirtin.

Tersine, düzenli bir INSERT deyimi, bir varsayılan değer eklemek yerine null değeri korur. ««««Ekle... SEÇİN * tablo ipucu varsayılan değerleri eklemek için normal ekleme Ayrıca destekler ama aynı temel davranış openrowset(bulk...) from deyimi sağlar.

[!NOT]

Bkz: Tablo sütun atla örnek biçimi dosyalar için (SQL Server) tablo sütun Atla için bir biçim dosyası kullanma.

Örnek tablo ve veri dosyası

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

Örnek tablo

Örnek bir tablo ismi gerektirir MyTestDefaultCol2 mahluk AdventureWorks örnek veritabanı altında dbo şema. Bu tablo oluşturmak için Microsoft  SQL Server Management Studiosorgu Düzenleyicisi, yürütün:

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

İkinci sütun, tablo dikkat Col2, bir varsayılan değeri vardır.

Örnek biçimi dosyası

Toplu alma örneklerin olmayan xml biçimi dosyası kullanma MyTestDefaultCol2-f-c.Fmtkarşılık gelen tam e MyTestDefaultCol2tablosu. Bu biçimi dosyası oluşturmak için MicrosoftWindows komut isteminde, komut girin:

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

Biçim dosyaları oluşturma hakkında daha fazla bilgi için bkz: (SQL Server) biçimi dosyası oluşturma.

Örnek veri dosyası

Örnek, örnek bir veri dosyası kullanır MyTestEmptyField2-c.Dat, ikinci alana hiçbir değer içeren. MyTestEmptyField2-c.DatVeri dosyası, aşağıdaki kayıtları içerir.

1,,DataField3
2,,DataField3

Bcp veya bulk INSERT boş değerleri tutma

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

Komutu

Niteleyici

Niteleyici türü

bcp

-k

Anahtarı

TOPLU EKLEME

GETKEEPNULLS1

Bağımsız değişken

1 Varsayılan değerleri yoksa bulk INSERT, tablo sütun boş değerlere izin vermek üzere tanımlanmış olması gerekir.

[!NOT]

Bu niteleyiciler default tanımları tablo bu toplu alma komutları tarafından denetimi devre dışı bırakma. Ancak, herhangi bir eş zamanlı INSERT deyimleri, default tanımları bekleniyor.

Daha fazla bilgi için BCP yardımcı programıve BULK INSERT (Transact-SQL).

Örnekler

Bu bölümde toplu örneklerde Al kullanarak bcpveya bulk INSERT ve değerleri null koru.

İkinci tablo sütun Col2, varsayılan değere sahip. Veri dosyasının ilgili alan boş bir dize içerir. Varsayılan olarak, ne zaman bcpveya bu veri dosyasına veri için bulk INSERT kullanılır MyTestDefaultCol2 tablo, varsayılan değer olan Col2 , aşağıdaki sonucu üreten eklenir:

1

Default value of Col2

DataField3

2

Default value of Col2

DataField3

Eklemek "NULL'' yerine "Default value of Col2", kullanmanız gereken -kgeçiş ya da aşağıda gösterildiği gibi keepnull seçeneği, bcpve bulk INSERT örnekler.

BCP ve tutma Null değerleri kullanma

Aşağıdaki örnek boş değerlere koru gösterilmiştir bir bcpkomut. bcpKomutu aşağıdaki anahtarları içerir:

Anahtarı

Açıklama

-f

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

-k

Boş sütunlar null değeri var herhangi bir varsayılan değerleri eklenen sütunlar için yerine çalışma sırasında bulundurmalısınız belirtir.

-T

Bcp yardımcı programı bağlandığı belirtir SQL ServerGüvenilen bir bağlantı ile.

Windows komut istemine girin.

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

bulk INSERT kullanarak ve Null değerleri tutma

Aşağıdaki örnek, GETKEEPNULLS seçeneği bir bulk INSERT deyimi kullanımı gösterilmiştir. Bir sorgu aracı gibi SQL Server Management Studiosorgu Düzenleyicisi, 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...) DAN

Varsayılan olarak, toplu yükleme işleminde belirtilmeyen tüm sütunlar null INSERT ayarlanır... SEÇİN * OPENROWSET(BULK...) ALINDI. Ancak, veri dosyasındaki boş alan için karşılık gelen tablo sütunu varsayılan değer (varsa) kullanacağını belirtebilirsiniz. Varsayılan değerleri kullanmak için aşağıdaki tablo ipucu belirtin:

Komutu

Niteleyici

Niteleyici türü

EKLE... SEÇİN * OPENROWSET(BULK...) DAN

WITH(KEEPDEFAULTS)

Tablo ipucu

[!NOT]

daha fazla bilgi için bkz: Insert (Transact-sql), select (Transact-sql), OPENROWSET (Transact-SQL), veTablo ipuçları (Transact-sql)

Örnekler

Aşağıdaki ekleme... SEÇİN * dan openrowset(bulk...) örnek toplu veri alır ve varsayılan değerlerini korur.

Örnekleri çalıştırmak için oluşturmanız gerekir MyTestDefaultCol2 örnek tablo, MyTestEmptyField2-c.Datveri dosyası ve bir biçim dosyası kullanma MyTestDefaultCol2-f-c.Fmt. Bu örnekler oluşturma konusunda daha fazla bilgi için bkz: "Örnek tablo ve veri dosyası" Bu konunun önceki kısımlarında.

İkinci tablo sütun Col2, varsayılan değere sahip. Veri dosyasının ilgili alan boş bir dize içerir. Ne zaman Ekle... SEÇİN * dan openrowset(bulk...) Al alanlarında bu veri dosyasına MyTestDefaultCol2 tablo, varsayılan olarak, boş içine eklenen Col2 varsayılan değer yerine. 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ıza gerek. Bir sorgu aracı gibi SQL Server Management Studiosorgu Düzenleyicisi, 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

ilişkili Görevler

Bir biçim dosyası kullanma

Verileri kullanmak için toplu alma veya toplu verme biçimleri

Veri biçimleri için Uyumluluk kullanma bcp zamanı belirtmek için

  1. Alan ve satır sonlandırıcılar (SQL Server) belirtin

  2. Önek uzunluğu veri dosyaları (SQL Server) kullanma bcp tarafından belirtme

  3. Dosya depolama türü (SQL Server) kullanma bcp tarafından belirtme

Ayrıca bkz.

Başvuru

Yedekleme (Transact-sql)

OPENROWSET (Transact-SQL)

BCP yardımcı programı

BULK INSERT (Transact-SQL)

Tablo ipuçları (Transact-sql)

Kavramlar

(SQL Server) toplu alma işlemi sırasında NULL veya UseDefault değerleri tutmak

Diğer Kaynaklar

Creating and Modifying DEFAULT Definitions