Подготовка данных к массовому экспорту или импорту (SQL Server)

В этом разделе рассматриваются факторы, которые следует учитывать при планировании операций массового экспорта, и требования для операций массового импорта.

Примечание

Если вы не уверены в том, как следует форматировать файл данных для массового импорта, то для экспорта данных из таблицы в файл данных можно использовать программу bcp . Форматирование каждого поля данных в этом файле соответствует необходимому формату для массового импорта данных в соответствующий столбец таблицы. Используйте то же самое форматирование для полей своего файла данных.

Замечания по формату файлов данных для массового экспорта

Прежде чем выполнить операцию массового экспорта с помощью команды bcp , примите во внимание следующее.

  • При экспорте данных в файл команда bcp автоматически создает файл данных, используя указанное имя файла. Если это имя файла уже используется, то в процессе массового копирования в файл данных существующее содержимое файла перезаписывается.

  • Для массового экспорта из таблицы или представления в файл данных необходимо разрешение SELECT в таблице или представлении, над которым производится операция массового копирования.

  • Microsoft SQL Server может использовать параллельные проверки для получения данных. Таким образом, строки таблицы, которые массово экспортируются из экземпляра SQL Server, обычно не гарантируются в определенном порядке в файле данных. Чтобы строки таблицы для массового экспорта размещались в файле данных в определенном порядке, примените параметр queryout для массового экспорта из запроса и укажите предложение ORDER BY.

Требования к формату файлов данных для массового импорта

Файл, из которого необходимо импортировать данные, должен отвечать следующим основным требованиям.

  • Данные должны быть представлены в формате строк и столбцов.

Примечание

Структура файла данных не обязательно должна совпадать со структурой SQL Server таблицы, так как столбцы могут быть пропущены или переупорядочены во время процесса массового импорта.

  • Данные в файле данных должны быть в поддерживаемом формате, например символьном или исходном.

  • Данные могут быть в символьном или исходном двоичном формате, включая Юникод.

  • Для импорта данных с использованием команды bcp, инструкции BULK INSERT или инструкции INSERT… SELECT * FROM OPENROWSET(BULK...), целевая таблица должна уже существовать.

  • Каждое поле в файле данных должно быть совместимо с соответствующим столбцом в целевой таблице. Например, поле типа int нельзя загрузить в столбец типа datetime. Дополнительные сведения см. в разделах Форматы данных для массового импорта или массового экспорта (SQL Server) и Указание форматов данных для совместимости при использовании bcp (SQL Server)).

    Примечание

    Чтобы указать подмножество строк для импорта из файла данных, а не из всего файла, можно использовать команду bcp с параметром -Ffirst_row и /или параметром -Llast_row . Дополнительные сведения см. в разделе bcp Utility.

  • Чтобы импортировать данные из файлов данных фиксированной длины или с полями фиксированной длины, следует использовать файл форматирования. Дополнительные сведения см. в разделе Xml Format Files (SQL Server).

  • Значения файлов с разделителями-запятыми (CSV) не поддерживаются операциями массового импорта SQL Server. Однако в некоторых случаях CSV-файл можно использовать в качестве файла данных для массового импорта данных в SQL Server. Обратите внимание, что признаком конца поля CSV-файла не обязательно должна быть запятая. CSV-файл, который можно использовать в качестве файла данных для массового импорта, должен соответствовать следующим условиям.

    • Поля данных не должны содержать признак конца поля.

    • Или никакие, или все значения в полях данных должны заключаться в кавычки ("").

    Чтобы выполнить массовый импорт данных из файла таблицы Microsoft FoxPro или Visual FoxPro (DBF) или файла листа Microsoft Excel (.xls), необходимо преобразовать данные в CSV-файл, соответствующий указанным выше ограничениям. Этот файл обычно имеет расширение CSV. Затем файл .csv можно использовать в качестве файла данных в SQL Server операции массового импорта.

    В 32-разрядных системах можно импортировать данные CSV в SQL Server таблицу без оптимизации массового импорта с помощью OPENROWSET с поставщиком OLE DB для Jet. Поставщик Jet обрабатывает текстовые файлы как таблицы со схемой, определенной в файле schema.ini, который расположен в том же каталоге, что и источник данных. Для CSV-данных одним из параметров в файле schema.ini будет «FORMAT=CSVDelimited». Чтобы использовать такое решение, нужно представлять принципы работы поставщика Jet Test IISAMm: знать синтаксис строки соединения, правила использования schema.ini, параметры реестра и т. д. Лучшими источниками для получения таких сведений служат справка Microsoft Access и статьи базы знаний. Дополнительные сведения см. в разделах Инициализация драйвера текстового источника данных, Как использовать распределенный запрос SQL Server 7.0 со связанным сервером для защищенных баз данных Access, Как использовать поставщик Jet OLE DB 4.0 для подключения к базам данных ISAM (на английском языке) и Как открыть текстовые файлы с разделителями с помощью драйвера Text IIsam поставщика Jet (на английском языке).

Кроме того, для массового импорта данных из файла данных в таблицу необходимо следующее.

  • Пользователи должны иметь разрешения INSERT и SELECT в таблице. Пользователи также должны иметь разрешение ALTER TABLE в случае использования параметров, требующих операций DDL, например отмены ограничений.

  • При массовом импорте данных с помощью инструкции BULK INSERT или INSERT... SELECT * FROM OPENROWSET(BULK...), файл данных должен быть доступен для операций чтения с помощью профиля безопасности SQL Server процесса (если пользователь входит в систему с использованием SQL Server указанного имени входа) или имени входа Microsoft Windows, используемого в режиме делегированной безопасности. В дополнение пользователь должен иметь разрешение ADMINISTER BULK OPERATIONS для чтения файла.

Примечание

Массовый импорт в секционированное представление не поддерживается, и попытки массового импорта данных в секционированное представление завершаются неудачно.

Внешние ресурсы

Импорт данных из Excel в SQL Server

Журнал изменений

Обновленное содержимое
Добавлены сведения об использовании поставщика OLE DB для Jet при импорте данных с разделителями-запятыми.

См. также:

Программа bcp
BULK INSERT (Transact-SQL)
Типы данных (Transact-SQL)
Использование символьного формата для импорта или экспорта данных (SQL Server)
Использование собственного формата для импорта или экспорта данных (SQL Server)