Mantenere i valori Identity durante l'importazione bulk dei dati (SQL Server)
È possibile eseguire l'importazione bulk di file di dati contenenti valori Identity in un'istanza di Microsoft SQL Server. Per impostazione predefinita, i valori per la colonna Identity del file di dati importato vengono ignorati e sostituiti automaticamente da valori univoci assegnati da SQL Server. I valori univoci si basano sui valori di inizializzazione e incremento specificati durante la creazione della tabella.
Se il file di dati non contiene valori per la colonna dell'identificatore nella tabella, utilizzare un file di formato per specificare di ignorare la colonna dell'identificatore nella tabella durante l'importazione dei dati. SQL Server assegna automaticamente valori univoci per la colonna.
Per impedire l'assegnazione da parte di SQL Server di valori Identity durante l'importazione bulk delle righe di dati in una tabella, utilizzare il qualificatore per il mantenimento dei valori Identity corretto. Quando si specifica un qualificatore per il mantenimento dei valori Identity, SQL Server utilizza i valori Identity nel file di dati. Sono disponibili i qualificatori seguenti:
Comando |
Qualificatore per il mantenimento dei valori Identity |
Tipo di qualificatore |
---|---|---|
bcp |
-E |
Opzione |
BULK INSERT |
KEEPIDENTITY |
Argomento |
INSERT ... SELECT * FROM OPENROWSET(BULK...), |
KEEPIDENTITY |
Hint di tabella |
Per ulteriori informazioni, vedere Utilità bcp, BULK INSERT (Transact-SQL), OPENROWSET (Transact-SQL), INSERT (Transact-SQL), SELECT (Transact-SQL) e Hint di tabella (Transact-SQL).
[!NOTA]
Per creare un numero a incremento automatico da utilizzare in più tabelle o da chiamare dalle applicazioni senza fare riferimento ad alcuna tabella, vedere Numeri di sequenza.
Esempi
Negli esempi di questo argomento viene eseguita un'importazione bulk dei dati tramite INSERT ... SELECT * FROM OPENROWSET(BULK...) mantenendo i valori predefiniti.
Tabella di esempio
Gli esempi di importazione bulk richiedono la creazione di una tabella denominata myTestKeepNulls nel database di esempio AdventureWorks sotto lo schema dbo. Per creare la tabella seguente. nell'editor di query di SQL Server Management Studio eseguire:
USE AdventureWorks;
GO
SELECT * INTO HumanResources.myDepartment
FROM HumanResources.Department
WHERE 1=0;
GO
SELECT * FROM HumanResources.myDepartment;
L'istruzione IDENTITY_INSERT nella tabella Department su cui si basa myDepartment è impostata su OFF. Pertanto, per importare i dati in una colonna Identity, è necessario specificare KEEPIDENTITY o -E.
File di dati di esempio
Nel file di dati utilizzato negli esempi di importazione bulk sono inclusi i dati esportati dalla tabella HumanResources.Department nel formato nativo. Per creare il file di dati, al prompt dei comandi di Microsoft Windows digitare:
bcp AdventureWorks.HumanResources.Department out myDepartment-n.Dat -n -T
File di formato di esempio
In questi esempi di importazione bulk viene impiegato un file di formato XML, myDepartment-f-x-n.Xml, che utilizza formati nativi. Negli esempi viene utilizzato bcp per creare il file di formato dalla tabella HumanResources.Department del database AdventureWorks. Al prompt dei comandi di Windows digitare:
bcp AdventureWorks.HumanResources.Department format nul -n -x -f myDepartment-f-n-x.Xml -T
Per ulteriori informazioni sulla creazione di un file di formato, vedere Creazione di un file di formato (SQL Server).
A.Utilizzo di bcp mantenendo i valori Identity
Nell'esempio seguente viene illustrato come mantenere i valori Identity quando si utilizza bcp per l'importazione bulk dei dati. Il comando bcp utilizza il file di formato myDepartment-f-n-x.Xml e include le opzioni seguenti:
Qualificatori |
Descrizione |
---|---|
-E |
Specifica che il valore o i valori Identity inclusi nel file di dati devono essere utilizzati per la colonna Identity. |
-T |
Specifica che l'utilità bcp si connette a SQL Server con una connessione trusted. |
Al prompt dei comandi di Windows digitare:
bcp AdventureWorks.HumanResources.myDepartment in C:\myDepartment-n.Dat -f C:\myDepartment-f-n-x.Xml -E -T
B.Utilizzo di BULK INSERT mantenendo i valori Identity
Nell'esempio seguente viene utilizzato BULK INSERT per l'importazione bulk dei dati dal file myDepartment-c.Dat nella tabella AdventureWorks.HumanResources.myDepartment. L'istruzione utilizza il file di formato myDepartment-f-n-x.Xml e include l'opzione KEEPIDENTITY per garantire che i valori Identity vengano mantenuti nel file di dati.
Nell'editor di query di SQL Server Management Studio eseguire:
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.Utilizzo di OPENROWSET mantenendo i valori Identity
Nell'esempio seguente viene utilizzato il provider di set di righe con lettura bulk OPENROWSET per l'importazione bulk dei dati dal file myDepartment-c.Dat nella tabella AdventureWorks.HumanResources.myDepartment. L'istruzione utilizza il file di formato myDepartment-f-n-x.Xml e include l'hint KEEPIDENTITY per garantire che i valori Identity vengano mantenuti nel file di dati.
Nell'editor di query di SQL Server Management Studio eseguire:
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
Attività correlate
Per utilizzare un file di formato
Utilizzo di un file di formato per l'importazione bulk dei dati (SQL Server)
Utilizzo di un file di formato per escludere un campo di dati (SQL Server)
Utilizzo di un file di formato per ignorare una colonna di una tabella (SQL Server)
Per utilizzare formati di dati per l'importazione o l'esportazione bulk
Importare dati in formato nativo e carattere da versioni precedenti di SQL Server
Utilizzo del formato carattere per l'importazione o l'esportazione di dati (SQL Server)
Utilizzo del formato nativo per importare o esportare dati (SQL Server)
Utilizzo del formato carattere Unicode per l'importazione o l'esportazione di dati (SQL Server)
Utilizzare il formato Unicode nativo per importare o esportare dati (SQL Server)
Per specificare i formati di dati per la compatibilità mediante bcp
Impostazione dei caratteri di terminazione del campo e della riga (SQL Server)
Specificare la lunghezza del prefisso nei file di dati tramite bcp (SQL Server)
Specifica del tipo di archiviazione di file tramite bcp (SQL Server)