Для успешной работы требуется несколько шагов. В качестве предварительных условий необходимо убедиться, что SQL Сервер 2019 обновлен до CU4 ( KB4548597 ), чтобы исправить несколько известных проблем. Для бесплатного решения вам потребуется установить 64-разрядную версию Microsoft Access Database Engine 2016 Redistributable . Это установит 64-битную версию драйверов ODB C.
Теперь, когда эти две вещи созданы, вы можете создать внешний источник данных. Я рекомендую отключить PUSHDOWN
. Я видел, что это вызывает некоторые проблемы с этим конкретным драйвером.
Если вы хотите напрямую подключиться к CSV-файлу, который содержит строку заголовка, вы можете создать внешний источник данных, просто указав текстовый драйвер доступа и папка, которая будет содержать файлы:
CREATE EXTERNAL DATA SOURCE MyODBC
WITH
(
LOCATION = 'odbc://localhost',
CONNECTION_OPTIONS = 'Driver=Microsoft Access Text Driver (*.txt, *.csv);Dbq=F:\data\files\',
PUSHDOWN = OFF
);
Чтобы использовать источник данных, вам нужно создать определение внешней таблицы, которая отражает формат файла. Параметр LOCATION
будет именем файла для загрузки. Вы можете заключить имя файла и имя драйвера в фигурные скобки, чтобы избежать проблем со специальными символами. Важно убедиться, что имена столбцов, которые вы определяете для этой таблицы, совпадают с именами в строке заголовка. Поскольку вы используете CU4, если тип данных не соответствует ожиданиям водителя, вы получите сообщение об ошибке, указывающее, какие типы данных ожидались.
CREATE EXTERNAL TABLE dbo.CsvData
(
Name nvarchar(128),
Count int,
Description nvarchar(255)
)
WITH
(
LOCATION='[filename.csv]',
DATA_SOURCE = [MyODBC]
)
Если вы хотите определить имена столбцов, типы данных и т. д. c. в пользовательском интерфейсе ODB C Источники данных (64-бит) выберите текстовый драйвер Microsoft Access . Затем вы можете выбрать папку, типы файлов и определение формата текстового файла. Обязательно используйте 64-битные источники данных. После того, как вы определите детали формата, вы увидите файл schema.ini
, созданный в папке, содержащей эти данные.
Для внешнего источника данных вы укажете имя DSN :
CREATE EXTERNAL DATA SOURCE MyODBC
WITH
(
LOCATION = 'odbc://localhost',
CONNECTION_OPTIONS = 'DSN=LocalCSV',
PUSHDOWN = OFF
);
EXTERNAL TABLE
создается так же, как и раньше, с именами столбцов и типами данных, соответствующими определению, которое вы объявили в DSN.