Сохранение значений идентификаторов при массовом импорте данных (SQL Server)
Для файлов данных, содержащих значения идентификаторов, можно выполнить массовый импорт в экземпляр Microsoft SQL Server. По умолчанию значения столбца идентификаторов в импортируемом файле данных не учитываются, и SQL Server автоматически присваивает им уникальные значения на основе начального значения и значения приращения, указанных при создании таблицы.
Если файл данных не содержит значений для столбцов идентификаторов в таблице, то для указания того, что при импорте столбец идентификаторов в таблице нужно пропустить, применяется файл форматирования. SQL Server автоматически присваивает столбцу уникальные значения..
Чтобы SQL Server не присваивал значения идентификаторов при массовом импорте строк в таблицу, используется соответствующий квалификатор команды для сохранения значений идентификаторов. При указании квалификатора сохранения значений идентификаторов SQL Server пользуется значениями идентификаторов, имеющимися в файле данных. Ниже приведены эти квалификаторы.
Команда |
Квалификатор сохранения значений идентификаторов |
Тип квалификатора |
---|---|---|
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).
А.Использование команды 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)
Задание форматов данных для совместимости с помощью программы bcp
Определение длины префикса в файлах данных с помощью программы bcp (SQL Server)
Указание типа файлового хранилища с помощью программы bcp (SQL Server)