Aracılığıyla paylaş


Boş değerlere tutma veya toplu almayı sırasında varsayılan değerleri kullanma

Verileri içe içe aktarıldığında, varsayılan olarak, bir tablo, bcp komutu ve bulk INSERT deyim sütun için tanımlanan varsayılan gözlemek tablo.Örneğin, sütun için varsayılan değer veri dosyasında null bir alan varsa, bunun yerine yüklenir.The bcp command and BULK INSERT statement both allow you to specify that nulls values be retained.

Aksine, normal bir INSERT deyim, bir varsayılan değer eklemek yerine null değerini korur.Ekle...SEÇİN * ndan openrowset(bulk...) deyim INSERT düzenli olarak aynı temel davranış sağlar ancak varsayılan değerleri eklemek için bir tablo İpucu Ayrıca destekler.

Not

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

Örnek tablo ve veri dosyası

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

Örnek tablo

Örnek bir tablo taşıyan bir iste MyTestDefaultCol2 oluşturulmasını AdventureWorks2008R2 örnek veritabanı altında dbo şema.To create this table, in Microsoft SQL Server Management Studio Query Editor, execute:

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

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

Örnek Biçim dosyası

Toplu alma örneklerden bazıları-xml biçimi dosyası kullanma MyTestDefaultCol2-f-c.Fmt 'ya karşılık gelen tam olarak çok MyTestDefaultCol2 tablo.Bu biçim dosyası, en Microsoft Windows komut istemi istemine girin:

bcp AdventureWorks2008R2..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: Bir biçim dosyası oluşturuluyor.

Örnek veri dosyası

Bu örnek, örnek bir veri dosyası kullanır MyTestEmptyField2-c.Dat, içeren değer yok ikinci bir alan.The MyTestEmptyField2-c.Dat data file contains the following records.

1,,DataField3
2,,DataField3

Null değerler bcp veya bulk INSERT tutma

Veri dosyasında boş bir alan toplu alma işlemi sırasında null değerini korur, yerine devralmasını varsayılan değer (varsa) için aşağıdaki niteleyicileri belirtmek tablo sütunlar.

Komutu

Niteleyici

Niteleyici türü

BCP

-k

Anahtarı

BULK INSERT

keepnulls1

Bağımsız değişken

1 Varsayılan değerleri yoksa, bulk INSERT, tablo sütun null değerlere izin vermek üzere tanımlanmış olmalıdır.

Not

Bu niteleyiciler varsayılan tablo tanımları, bu toplu alma komutları tarafından denetimini devre dışı bırakın.Ancak, aynı anda herhangi INSERT deyimleri için varsayılan tanımları beklenir.

Daha fazla bilgi için bkz: bcp Yardımcı Programı ve BULK INSERT (Transact-SQL).

Örnekler

Bu bölümdeki örnekler toplu alma kullanarak bcp bulk INSERT ve değerleri null koru veya.

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

1

Default value of Col2

DataField3

2

Default value of Col2

DataField3

Eklemek için "NULL"" yerine "Default value of Col2", kullanmak zorunda -k anahtarı veya keepnull seçeneği aşağıdaki gösterildiği gibi bcp ve bulk INSERT örnekler.

BCP ve tutma Null değerleri kullanma

Aşağıdaki örnek null değerleri tutulacağı yer gösterilmiştir bir bcp komut.The bcp command contains the following switches:

Anahtarı

Açıklama

-f

Komutunu kullanarak olduğunu belirtir bir biçim dosyası...

-k

Boş sütunlar null değeri işlem yerine sahip herhangi değerleri eklenen sütunlar için varsayılan sırasında korurlar belirtir.

-T

Belirleyen bir bcp yardımcı programını bağlanır SQL Server ile bir güvenilir bağlantı.

Windows komut istemi istemine girin.

bcp AdventureWorks2008R2..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 keepnulls seçeneği bir bulk INSERT deyim kullanımı gösterilmiştir.Bir sorgu araç gibi SQL Server Management Studio yürütmek Query Editor:

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

INSERT varsayılan değerlerle tutma...SEÇİN * OPENROWSET(BULK...) DAN

Varsayılan olarak, bulk load işlemi içinde belirtilen Sütun Ekle değeri null olarak küme...SEÇİN * OPENROWSET(BULK...) DAN.İlgili tablo veri dosyasında boş bir alan belirtebilirsiniz ancak, sütun (varsa) varsayılan değerini kullanır.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 İpucu

Örnekler

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

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

İkinci tablo sütun, Col2, bir varsayılan değere sahip.Veri dosyasının ilgili alan boş bir dize içerir.Ne zaman Ekle...SEÇİN * den openrowset(bulk...) almak bu veri dosyasına alanlar MyTestDefaultCol2 tablo, varsayılan değer olarak null eklendiğinde 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 örnek. gösterildiği şekilde keepdefaults tablo ipucu kullanmak zorundaBir sorgu araç gibi SQL Server Management Studio yürütmek Query Editor:

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