Przechowywanie wartości null lub przy użyciu wartości domyślnych podczas importu zbiorczego

Domyślnie, podczas importowania danych do tabela bcp poleceń i instrukcja WSTAWIENIA luzem obserwować wszystkie ustawienia domyślne, które są zdefiniowane dla kolumn w tabela.Na przykład jeśli w pliku danych pole null, wartość domyślną dla kolumna jest ładowany zamiast.Bcp poleceń i instrukcja WSTAWIENIA luzem umożliwiają określenie zachowane wartości null.

Natomiast regularnych instrukcja INSERT zachowuje wartość null zamiast wstawiania wartości domyślnej.WSTAW...Wybierz * Z OPENROWSET(BULK...) instrukcja zawiera podstawowe samo jak zwykłe WSTAW, ale ponadto obsługuje wskazówka tabela wstawiania wartości domyślne.

Ostrzeżenie

Przykładowy format plików, które pominąć kolumna tabela, zobacz Aby pominąć kolumnę tabeli przy użyciu pliku formatu.

Przykładową tabelę i pliku danych

Aby uruchomić przykłady w tym temacie, należy utworzyć przykładowy plik tabela i dane.

Przykładowa tabela

Przykłady wymagają, że tabela o nazwie MyTestDefaultCol2 utworzone w AdventureWorks2008R2 przykładowej bazy danych pod dbo schematu.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

Powiadomienie, że druga tabela, kolumna, Col2, ma wartość domyślną.

Przykładowy plik formatu

Niektóre przykłady importu zbiorczego korzystają z innych niż XML plik formatu, MyTestDefaultCol2-f-c.Fmt który odpowiada dokładnie do MyTestDefaultCol2 tabela.Aby utworzyć ten plik formatu w Microsoft wiersz polecenia systemu Windows, wpisz:

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

Aby uzyskać więcej informacji na temat tworzenia plików w formacie Zobacz Tworzenie pliku formatu.

Przykładowy plik danych

W przykładzie użyto przykładowy plik danych, MyTestEmptyField2-c.Dat, który nie zawiera żadnych wartości w drugim pole.MyTestEmptyField2-c.Dat Plik danych zawiera następujące rekordy.

1,,DataField3
2,,DataField3

Przechowywanie wartości Null z bcp lub WSTAW luzem

Kwalifikatory następujące określić, że puste pole w pliku danych zachowuje swoją wartość null podczas operacji importu zbiorczego, a nie dziedziczy wartości domyślnej (jeśli istnieje) dla kolumn tabela.

Polecenia

Kwalifikator

Typ kwalifikatora.

BCP

-k

Przełącznik

WSTAW LUZEM

KEEPNULLS1

Argument

1 Dla Wstawianie luzem, jeśli wartości domyślne nie są dostępne, kolumna tabela należy zdefiniować, aby zezwolić na wartości null.

Ostrzeżenie

Kwalifikatory wyłączyć sprawdzanie DOMYŚLNEJ definicji tabela za pomocą tych poleceń importu zbiorczego.Jednakże dla wszystkich równoczesnych instrukcji INSERT definicje domyślne oczekuje.

Aby uzyskać więcej informacji, zobacz Narzędzie bcp i BULK INSERT (Transact-SQL).

Przykłady

Przykłady w tej sekcji import zbiorczy za pomocą bcp lub WSTAW luzem i Zachowaj wartości null.

Druga kolumna tabela Kol2, wartość domyślna.Odpowiednie pole plik danych zawiera pusty ciąg.Domyślnie gdy bcp lub WSTAW luzem jest używany do importowania danych z pliku danych do MyTestDefaultCol2 tabela wartość domyślną Kol2 dodaje się, produkujących następujący wynik:

1

Default value of Col2

DataField3

2

Default value of Col2

DataField3

Aby wstawić "NULL"" zamiast "Default value of Col2", należy użyć -k przełącznik lub opcja KEEPNULL, jak pokazano w następującej bcp i przykłady WSTAW luzem.

Za pomocą bcp i przechowywanie wartości Null

Poniższy przykład ilustruje sposób zachować wartości null w bcp polecenia.Bcp polecenie zawiera następujące przełączniki:

Przełącznik

Opis

-f

Określa, że polecenie przy użyciu plik formatu.

-k

Określa, że podczas operacji, a nie mają żadnych wartości domyślne dla kolumn dodaje puste kolumny powinny zachować wartość null.

-T

Określa, że bcp narzędzie łączy się z SQL Server z zaufane połączenie.

W wiersz polecenia systemu Windows należy wprowadzić.

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

Za pomocą polecenia WSTAW luzem i utrzymywanie wartości Null

Poniższy przykład ilustruje sposób użycia opcji KEEPNULLS w instrukcja WSTAWIENIA luzem.narzędzie do kwerendy takie jak SQL Server Management Studio Edytor kwerend wykonać:

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

Przechowywanie wartości domyślne z WSTAWIĆ...WYBIERZ * Z OPENROWSET(BULK...)

Domyślnie wszystkie kolumny, które nie są określone w operacji ładowania luzem są zestaw null przez wstawianie...WYBIERZ * Z OPENROWSET(BULK...).Można jednak określić, że puste pole w pliku danych, odpowiednią kolumna tabela używa wartość domyślną (jeśli ma zastosowanie).Aby użyć wartości domyślnych, należy określić następujące wskazówki tabela:

Polecenia

Kwalifikator

Typ kwalifikatora.

WSTAW...WYBIERZ * Z OPENROWSET(BULK...)

WITH(KEEPDEFAULTS)

Wskazówka tabeli

Przykłady

WSTAW następujący...Wybierz * przykład OPENROWSET(BULK...) Z luzem importuje dane i zachowuje wartości domyślne.

Aby uruchomić przykłady, należy utworzyć MyTestDefaultCol2 przykładową tabela MyTestEmptyField2-c.Dat danych w pliku, a plik formatu MyTestDefaultCol2-f-c.Fmt.Informacje na temat tworzenia tych próbek zobacz "Próbki tabeli i pliku danych" wcześniej w tym temacie.

Druga kolumna tabela Kol2, wartość domyślna.Odpowiednie pole plik danych zawiera pusty ciąg.WSTAW po...Wybierz * pola tego pliku danych do importowania Z OPENROWSET(BULK...) MyTestDefaultCol2 tabela, domyślnie NULL jest wstawiany do Kol2 zamiast wartości domyślne.Wynik to zachowanie domyślne:

1

NULL

DataField3

2

NULL

DataField3

Aby wstawić wartość domyślną "Default value of Col2", zamiast "NULL", należy użyć KEEPDEFAULTS tabela wskazówki, jak pokazano w następującym przykładzie.narzędzie do kwerendy takie jak SQL Server Management Studio Edytor kwerend wykonać:

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