Подготовка данных к массовому экспорту или импорту
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
В этом разделе рассматриваются факторы, которые следует учитывать при планировании операций массового экспорта, и требования для операций массового импорта.
Примечание.
Если вы не знаете, как форматировать файл данных для массового импорта, используйте программу bcp для экспорта данных из таблицы в файл данных. Форматирование каждого поля данных в этом файле соответствует необходимому формату для массового импорта данных в соответствующий столбец таблицы. Используйте то же самое форматирование для полей своего файла данных.
Рекомендации по формату файлов данных для массового экспорта
Прежде чем выполнить операцию массового экспорта с помощью команды bcp , примите во внимание следующее.
При экспорте данных в файл команда bcp автоматически создает файл данных, используя указанное имя файла. Если это имя файла уже используется, то в процессе массового копирования в файл данных существующее содержимое файла перезаписывается.
Для массового экспорта из таблицы или представления в файл данных требуется
SELECT
разрешение на таблицу или представление, которое копируется массово.SQL Server может использовать параллельные проверки для получения данных. Таким образом, строки таблицы, которые массово экспортируются из экземпляра SQL Server, обычно не будут иметь определенный порядок в файле данных. Чтобы сделать строки таблицы с массовым экспортом, отображаются в определенном порядке в файле данных, используйте параметр запроса для массового экспорта из запроса и укажите
ORDER BY
предложение.
Требования к формату файлов данных для массового импорта
Файл, из которого необходимо импортировать данные, должен отвечать следующим основным требованиям.
- Данные должны быть представлены в формате строк и столбцов.
Примечание.
Структура файла данных не должна совпадать со структурой таблицы SQL Server, так как столбцы могут быть пропущены или переупорядочены во время процесса массового импорта.
Данные в файле данных должны быть в поддерживаемом формате, например символьном или исходном.
Данные могут быть в символьном или исходном двоичном формате, включая Юникод.
Чтобы импортировать данные с помощью команды bcp,
BULK INSERT
инструкции илиINSERT ... SELECT * FROM OPENROWSET(BULK...)
инструкции, целевая таблица должна существовать.Каждое поле в файле данных должно быть совместимо с соответствующим столбцом в целевой таблице. Например, поле int не может быть загружено в столбец datetime . Дополнительные сведения см. в статьях о форматах данных массового импорта или массового экспорта (SQL Server) и указании форматов данных совместимости при использовании bcp (SQL Server).
Примечание.
Чтобы указать подмножество строк для импорта из файла данных, а не всего файла, можно использовать команду bcp с параметром
-F <first_row>
или-L <last_row>
переключателем. Дополнительные сведения см. в разделе bcp Utility.Чтобы импортировать данные из файлов данных фиксированной длины или с полями фиксированной ширины, используйте файл форматирования. Дополнительные сведения см. в разделе XML Format Files (SQL Server) (SQL Server).
Начиная с SQL Server 2017 (14.x), CSV-файл можно использовать в качестве файла данных для массового импорта данных в SQL Server. Терминатор поля CSV-файла не должен быть запятой (
,
). CSV-файл должен соответствовать следующим ограничениям:Поля данных не могут содержать конца поля.
Если необходимо заключить все поля в кавычки (
""
), необходимо заключить все поля данных в кавычки.Чтобы массовый импорт данных из файла таблицы Microsoft FoxPro или Visual FoxPro (
.dbf
) или файла листа Microsoft Excel (.xls), необходимо преобразовать данные в CSV-файл, соответствующий предыдущим ограничениям. Расширение файла обычно будет.csv
иметь значение . Затем файл можно использовать.csv
в качестве файла данных в операции массового импорта SQL Server.В 32-разрядных системах (SQL Server 2014 (12.x) и предыдущих версиях можно импортировать CSV-данные в таблицу SQL Server без оптимизации массового импорта с помощью OPENROWSET с поставщиком OLE DB для Jet. Jet обрабатывает текстовые файлы как таблицы с схемой, определенной файлом
schema.ini
, расположенным в том же каталоге, что и источник данных. Для CSV-данных один из параметров вschema.ini
файле будет"FORMAT=CSVDelimited"
. Чтобы использовать это решение, необходимо понять, как работает JET Text IISAM (его синтаксис строка подключения синтаксис, использование,schema.ini
параметры параметров реестра и т. д.). Лучшими источниками этой информации являются статьи справки и базы знаний (KB) Microsoft Access. Дополнительные сведения см. в статье Инициализация драйвера источников текстовых данных, Использование распределенного запроса SQL Server 7.0 со связанным доступом для баз данных с защищенным доступом, Инструкции. Использование Jet OLE DB Provider 4.0 для подключения к базам данных ISAMи Как открывать текстовые файлы с разделителями с помощью Text IIsam Jet Provider.
Кроме того, массовый импорт данных из файла данных в таблицу имеет следующие требования:
Пользователи должны иметь
INSERT
иSELECT
разрешения на таблицу. Пользователям также требуетсяALTER TABLE
разрешение при использовании параметров, требующих операций языка определения данных (DDL), таких как отключение ограничений.При массовом импорте данных с помощью
BULK INSERT
илиINSERT ... SELECT * FROM OPENROWSET(BULK...)
файл данных должен быть доступен для операций чтения с помощью профиля безопасности процесса SQL Server (если пользователь входит в систему с использованием предоставленного имени входа SQL Server) или имени входа Microsoft Windows, используемого при делегированной безопасности. Кроме того, пользователь должен иметьADMINISTER BULK OPERATIONS
разрешение на чтение файла.
Примечание.
Массовый импорт в секционированное представление не поддерживается, и попытки массового импорта данных в секционированное представление завершаются неудачно.