Сохранение значений идентификаторов при массовом импорте данных (SQL Server)
Для файлов данных, содержащих значения идентификаторов, можно выполнить массовый импорт в экземпляр Microsoft SQL Server. По умолчанию значения столбца идентификаторов в импортируемом файле данных не учитываются, и SQL Server автоматически присваивает им уникальные значения на основе начального значения и значения приращения, указанных при создании таблицы.
Если файл данных не содержит значений для столбцов идентификаторов в таблице, то для указания того, что при импорте столбец идентификаторов в таблице нужно пропустить, применяется файл форматирования. SQL Server присваивает столбцу уникальные значения автоматически.
Чтобы SQL Server не присваивал значения идентификаторов при массовом импорте строк в таблицу, используется соответствующий квалификатор команды для сохранения значений идентификаторов. При указании квалификатора сохранения значений идентификаторов SQL Server пользуется значениями идентификаторов, имеющимися в файле данных. Ниже приведены эти квалификаторы.
Get-Help | Квалификатор сохранения значений идентификаторов | Тип квалификатора |
---|---|---|
bcp |
-E | Параметр |
BULK INSERT | KEEPIDENTITY | Аргумент |
Инструкции INSERT ... SELECT * FROM OPENROWSET(BULK...). | KEEPIDENTITY | Табличное указание |
Дополнительные сведения см. в разделах служебная программа bcp, BULK INSERT (Transact-SQL),OPENROWSET (Transact-SQL),INSERT (Transact-SQL),SELECT (Transact-SQL) и Табличные указания (Transact-SQL).
Примечание
Сведения о том, как создать автоматически увеличивающееся числовое значение, которое может использоваться в нескольких таблицах или вызываться из приложений без ссылки на какие-либо таблицы, см. в разделе Порядковые номера.
Примеры
Примеры в этом разделе массовый импорт данных с помощью инструкции INSERT ... SELECT * FROM OPENROWSET(BULK...) и сохранение значений по умолчанию.
Образец таблицы
Примеры массового импорта требуют, чтобы в образце базы данных AdventureWorks в схеме dbo была создана таблица с именем myTestKeepNulls. Для создания такой таблицы: в SQL Server Management Studio Редактор запросов выполните следующую команду:
USE AdventureWorks;
GO
SELECT * INTO HumanResources.myDepartment
FROM HumanResources.Department
WHERE 1=0;
GO
SELECT * FROM HumanResources.myDepartment;
В таблице Department, на которой основана таблица myDepartment
, IDENTITY_INSERT имеет значение OFF. Поэтому для импорта данных в столбец идентификаторов необходимо указать KEEPIDENTITY или -E.
Образец файла данных
Файл данных, который используется в примерах массового импорта, содержит данные, экспортированные из таблицы HumanResources.Department
в собственном формате. Чтобы создать файл данных, в командной строке Microsoft Windows введите:
bcp AdventureWorks.HumanResources.Department out myDepartment-n.Dat -n -T
Образец файла форматирования
В этих примерах массового импорта применяется XML-файл форматирования myDepartment-f-x-n.Xml
, использующий собственные форматы данных. В этом примере bcp
используется для создания данного файла форматирования из таблицы HumanResources.Department
базы данных AdventureWorks
. В командной строке Windows введите:
bcp AdventureWorks.HumanResources.Department format nul -n -x -f myDepartment-f-n-x.Xml -T
Дополнительные сведения о создании файла форматирования см. в статье Создание файла форматирования (SQL Server).
A. Использование команды bcp с сохранением значений идентификаторов
В следующем примере показан способ сохранения значений идентификаторов при использовании команды bcp
для массового импорта данных. Команда bcp
использует файл форматирования myDepartment-f-n-x.Xml
и содержит следующие параметры:
Квалификаторы | Описание |
---|---|
-E | Указывает, что в столбец идентификаторов загружаются значения идентификаторов, находящиеся в файле данных. |
-T | Указывает, что служебная bcp программа подключается к SQL Server с помощью доверенного подключения. |
В командной строке Windows введите:
bcp AdventureWorks.HumanResources.myDepartment in C:\myDepartment-n.Dat -f C:\myDepartment-f-n-x.Xml -E -T
Б. Использование BULK INSERT с сохранением значений идентификаторов
В следующем примере BULK INSERT используется для массового импорта данных из файла myDepartment-c.Dat
в таблицу AdventureWorks.HumanResources.myDepartment
. Инструкция использует файл форматирования myDepartment-f-n-x.Xml
и включает параметр KEEPIDENTITY для сохранения значений идентификаторов, находящихся в файле данных.
В SQL Server Management Studio Редактор запросов выполните следующую команду:
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;
В. Использование OPENROWSET с сохранением значений идентификаторов
В следующем примере поставщик наборов строк OPENROWSET используется для массового импорта данных из файла myDepartment-c.Dat
в таблицу AdventureWorks.HumanResources.myDepartment
. Инструкция использует файл форматирования myDepartment-f-n-x.Xml
и включает указание KEEPIDENTITY для сохранения всех значений идентификаторов, содержащихся в файле данных.
В SQL Server Management Studio Редактор запросов выполните следующую команду:
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
Связанные задачи
Использование файла форматирования
Использование файла форматирования для массового импорта данных (SQL Server)
Использование файла форматирования для пропуска поля данных (SQL Server)
Пропуск столбца таблицы с помощью файла форматирования (SQL Server)
Использование форматов данных для массового импорта или экспорта
Импорт данных в собственном и символьном формате из предыдущих версий SQL Server
Использование символьного формата для импорта или экспорта данных (SQL Server)
Использование собственного формата для импорта или экспорта данных (SQL Server)
Использование символьного формата Юникода для импорта и экспорта данных (SQL Server)
Использование собственного формата Юникода для импорта или экспорта данных (SQL Server)
Задание форматов данных для совместимости с помощью программы bcp
Определение длины префикса в файлах данных с помощью программы bcp (SQL Server)
Указание типа файлового хранилища с помощью программы bcp (SQL Server)
См. также:
BACKUP (Transact-SQL)
Программа bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Табличные указания (Transact-SQL)