[英]SQL Server to Snowflake - Load XML from CSV
我正在尝试通过利用Alteryx和SnowSQL自动将数据从SQL Server迁移到Snowflake 。
以下是步骤:
除了第 6 步外,该过程工作正常,其中一个 SQL Server data type: XML 。
我们以数据库[ AdventureWorks2017 ]中的表[ Production ].[ Illustration ]为例。
在 SQL Server 中,建表如下:
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)
);
使用以下 SnowSQL 指令执行步骤 6:
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]
显然,问题是 SnowSQL 将数据解析为JSON而它应该是XML 。
不幸的是,我在文档中找不到任何方法来更改此行为: Snowflake Doc
CSV 文件可以从这里下载。
有人愿意接受挑战吗?
我刚刚测试了你的配置,上传了文件:
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。 你能检查一下你的文件格式对象吗?
我遇到了同样的问题,使用上面 Gokhan 提到的 VARCHAR(16777216) 列将它加载到雪花中,然后在处理 XML 时使用 PARSE_XML() function 将该列转换为 XML 并且它工作正常。 直接尝试处理 VARCHAR 数据是行不通的,PARSE_XMl 会将字符串转换为 XML object 这将允许 XML 相关函数来解释数据。
如果有其他问题,请告诉我,如果它不起作用,也请告诉我。
一切顺利。
干杯!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.