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