Подготовка данных к массовому экспорту или импорту (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)