SQL сервер на снежинку - загрузка XML из CSV - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь автоматизировать миграцию данных с SQL Сервер на Снежинка , используя Alteryx и Снег SQL .

Вот шаги:

  1. создать базу данных в SF
  2. создать схемы в SF
  3. создать таблицы в SF
  4. загрузка данных с SQL сервера в файлы CSV
  5. подготовка файлов CSV в SF
  6. копирование файлов из промежуточных в таблицы в SF

Процесс работает нормально, за исключением шага # 6 с одним SQL типом данных сервера: XML.

Давайте возьмем таблицу [ Production ]. [ Иллюстрация ] из базы данных [ AdventureWorks2017 ] в качестве примера.

На SQL Сервере таблица создается следующим образом:

CREATE TABLE [Production].[Illustration](
    [IllustrationID] [int] IDENTITY(1,1) NOT NULL,
    [Diagram] [xml] NULL,
    [ModifiedDate] [datetime] NOT NULL
)

Таблица соответствия в Snowflake:

create or replace TABLE ILLUSTRATION (
    "IllustrationID" NUMBER(10,0),
    "Diagram" VARIANT,
    "ModifiedDate" TIMESTAMP_NTZ(9)
);

Шаг 6 выполняется со следующей инструкцией Snow SQL:

COPY INTO AdventureWorks201789.Production.Illustration FROM @AdventureWorks201789.Production.%Illustration FILE_FORMAT= (FORMAT_NAME='my_csv_format') PURGE=TRUE;

Эта команда вызывает эту ошибку :

    Error parsing JSON: <!-- Generated by Adobe Illustrator CS -> XAML Export Plug-In Version 0.17      --><!-- For questions
    File '@ILLUSTRATION/AdventureWorks201789.Production.Illustration.csv.gz', line 2, character 0
    Row 1, column "ILLUSTRATION"["Diagram":2]

Очевидно, проблема в том, что Snow SQL анализирует данные, как если бы это было JSON, тогда как это должно быть XML.

К сожалению, я не смог найти способ изменить это поведение в документации: Snowflake Do c

Файл CSV можно загрузить с здесь .

Кто-нибудь готов принять вызов?

1 Ответ

3 голосов
/ 25 марта 2020

Я только что проверил вашу конфигурацию, загрузил файл:

put file:///Users/gatil/Downloads/AdventureWorks2017.Production.Illustration.csv @mystage;

Создал таблицу:

create or replace TABLE ILLUSTRATION (
"IllustrationID" NUMBER(10,0),
"Diagram" VARCHAR(16777216),
"ModifiedDate" TIMESTAMP_NTZ(9)
);

Создал объект формата файла (CSVFILE):

create FILE FORMAT MY_CSV_FILE 
COMPRESSION = 'AUTO' 
FIELD_DELIMITER = ',' 
RECORD_DELIMITER = '\n' 
SKIP_HEADER = 1 
FIELD_OPTIONALLY_ENCLOSED_BY = '\042' 
TRIM_SPACE = FALSE 
ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE 
ESCAPE = 'NONE' 
ESCAPE_UNENCLOSED_FIELD = '\134' 
DATE_FORMAT = 'AUTO' 
TIMESTAMP_FORMAT = 'AUTO' 
NULL_IF = ('\\N');

И выполните команду копирования:

COPY INTO Illustration FROM @mystage FILE_FORMAT= (FORMAT_NAME= MY_CSV_FILE );

Он успешно загрузил 5 строк, и я вижу, что не пытался преобразовать их в JSON. Не могли бы вы проверить свой объект формата файла?

...