Keeping Identity Values When Bulk Importing Data

Data files that contain identity values can be bulk imported into an instance of Microsoft SQL Server.Domyślnie, wartości kolumna tożsamości w pliku danych, które są importowane są ignorowane i SQL Server automatycznie przypisuje unikatowe wartości. Unikatowe wartości są oparte na nasionami i przyrost wartości, które są określane podczas tworzenia tabela.

If the data file does not contain values for the identifier column in the table, use a format file to specify that the identifier column in the table should be skipped when importing data.SQL Server assigns unique values for the column automatically.

Aby zapobiec SQL Server z przypisaniem wartości tożsamości podczas zbiorczej Importowanie wierszy danych do tabela, należy użyć kwalifikator polecenia właściwe keep tożsamości. Po określeniu kwalifikator Zachowaj tożsamości, SQL Server używa wartości tożsamości w pliku danych. Kwalifikatory te są następujące:

Polecenie

Kwalifikator Zachowaj tożsamości

Typ kwalifikator

BCP

-E

Przełącznik

WSTAWIANIA ZBIORCZEGO

KEEPIDENTITY

Argument

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

KEEPIDENTITY

Wskazówka tabela

Aby uzyskać więcej informacji zobacz Narzędzie BCP, BULK INSERT (Transact-SQL), OPENROWSET (Transact-SQL), INSERT (Transact-SQL), SELECT (Transact-SQL), a Wskazówki do tabela (języka Transact-SQL).

Przykłady

W przykładach w tym temacie import zbiorczy danych za pomocą INSERT...SELECT * FROM OPENROWSET(BULK...) i utrzymywanie wartości domyślne.

Tabela próbki

Przykłady importu zbiorczego wymagają, aby tabela o nazwie myTestKeepNulls w tabeli można utworzyćAdventureWorks przykładowej bazy danych w obszarze dbo schematu.To create this table.in SQL Server Management Studio Query Editor, execute:

USE AdventureWorks;
GO
SELECT * INTO HumanResources.myDepartment 
   FROM HumanResources.Department
      WHERE 1=0;
GO
SELECT * FROM HumanResources.myDepartment;

The Department tabela on which myDepartment is based has IDENTITY_INSERT is zestaw to OFF. W związku z tym aby zaimportować dane kolumna tożsamości należy określić KEEPIDENTITY lub -E.Aby schematu tabela zobacz Tabela działu (AdventureWorks).

Przykładowy plik danych

Plik danych, używane w przykładach importu zbiorczego zawiera zbiorcze dane wyeksportowane z HumanResources.Department Tabela w format macierzysty. Aby utworzyć plik danych na Microsoft Wiersz polecenia systemu Windows, wpisz:

bcp AdventureWorks.HumanResources.Department out myDepartment-n.Dat -n -T

Przykładowy plik formatu

plik formatu XML, należy użyć to przykłady importu zbiorczego myDepartment-f-x-n.Xml, która używa formatów danych macierzystym. W tym przykładzie BCP utworzyć wygenerować plik formatu z HumanResources.Department spis AdventureWorks Baza danych. W wiersz polecenia systemu Windows wpisz polecenie:

bcp AdventureWorks.HumanResources.Department format nul -n -x -f myDepartment-f-n-x.Xml -T

Aby uzyskać więcej informacji na temat tworzenia pliku w formacie zobacz Creating a Format File.

A.Za pomocą bcp i aktualizowanie wartości tożsamości

Poniższy przykład ilustruje sposób zachować wartości tożsamości podczas używania BCP do masowych importowane dane.The bcp command uses the plik formatu, myDepartment-f-n-x.Xml, and contains the following switches:

Kwalifikatory

Description

-E

Określa, że tożsamość wartość lub wartości w pliku danych są stosowane do kolumna tożsamości.

-T

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

W wiersz polecenia systemu Windows należy wprowadzić.

bcp AdventureWorks.HumanResources.myDepartment in C:\myDepartment-n.Dat -f C:\myDepartment-f-n-x.Xml -E -T

B.Za pomocą BULK INSERT i aktualizowanie wartości tożsamości

W poniższym przykładzie użyto BULK INSERT do import zbiorczy dane z myDepartment-c.Dat plik do AdventureWorks.HumanResources.myDepartment Tabela. Używa instrukcja myDepartment-f-n-x.Xml plik formatu i udostępnia opcję KEEPIDENTITY upewnij się, że wszystkie wartości tożsamości w pliku danych są zachowywane.

W SQL Server Management Studio Uruchomić Edytor kwerendy:

USE AdventureWorks;
GO
DELETE HumanResources.myDepartment;
GO
BULK INSERT HumanResources.myDepartment
   FROM 'C:\myDepartment-n.Dat'
   WITH (
      KEEPIDENTITY,
      FORMATFILE='C:\myDepartment-f-n-x.Xml'
   );
GO
SELECT * FROM HumanResources.myDepartment;

C.Za pomocą OPENROWSET i aktualizowanie wartości tożsamości

W poniższym przykładzie użyto dostawca zbiorczych zestawów zestaw wierszy OPENROWSET zbiorczej importu danych z myDepartment-c.Dat plik do AdventureWorks.HumanResources.myDepartment Tabela. Używa instrukcja myDepartment-f-n-x.Xml plik formatu i zawiera wskazówki KEEPIDENTITY, aby zapewnić, że wszystkie wartości tożsamości w pliku danych są zachowywane.

W SQL Server Management Studio Uruchomić Edytor kwerendy:

USE AdventureWorks;
GO
DELETE HumanResources.myDepartment;
GO

INSERT INTO HumanResources.myDepartment
   with (KEEPIDENTITY)
   (DepartmentID, Name, GroupName, ModifiedDate)
   SELECT *
      FROM  OPENROWSET(BULK 'C:\myDepartment-n.Dat',
      FORMATFILE='C:\myDepartment-f-n-x.Xml') as t1;
GO