(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
Tablo Sütunlar veri dosyası alanlarını (SQL Server) eşlemek için bir biçim dosyası kullanma
Atla veri alanı (SQL Server) için bir biçim dosyası kullanma
(SQL Server) tablo sütun Atla için bir biçim dosyası kullanma
Verileri kullanmak için toplu alma veya toplu verme biçimleri
SQL Server'ın önceki sürümlerden native ve karakter biçimi veri alma
(SQL Server) veri aldığınızda veya için karakter biçimi kullanma
Aldığınızda veya veri (SQL Server) için Unicode karakter biçimi kullanma
Unicode yerel biçim aldığınızda veya veri (SQL Server) kullanmak
Veri biçimleri için Uyumluluk kullanma bcp zamanı belirtmek için
Önek uzunluğu veri dosyaları (SQL Server) kullanma bcp tarafından belirtme
Dosya depolama türü (SQL Server) kullanma bcp tarafından belirtme
Ayrıca bkz.
Başvuru
Kavramlar
(SQL Server) toplu alma işlemi sırasında NULL veya UseDefault değerleri tutmak