我正在尝试通过利用Alteryx和SnowSQL自动将数据从SQL Server迁移到Snowflake。
步骤如下:
1.在SF中创建数据库
1.在SF中创建模式
1.在SF中创建表
1.将数据从SQL Server下载到CSV文件
1.在SF中暂存CSV文件
1.将文件从分段复制到SF中的表
除了步骤#6使用一种SQL Server数据类型之外,该过程运行正常:XML格式。
我们以数据库[AdventureWorks2017]中的表[Production].[* Illustrator *]为例。
在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。
不幸的是,我在文档中找不到任何方法来更改此行为:雪花文件
CSV文件可从here下载。
有人愿意接受挑战吗?
2条答案
按热度按时间ha5z0ras1#
我刚测试了你的配置上传了文件
创建表:
已创建文件格式对象(CSVFILE):
并运行copy命令:
它成功地加载了5行,我可以看到它没有尝试将它们转换为JSON。请检查您的文件格式对象好吗?
xqk2d5yq2#
我也遇到了同样的问题,将它与Gokhan提到的VARCHAR(16777216)列一起加载到snowflake中,然后在处理XML时使用PARSE_XML()函数将该列转换为XML,它工作得很好。直接尝试处理VARCHAR数据是行不通的,PARSE_XMl会将字符串转换为XML对象,这将允许XML相关函数解释数据。
如果有进一步的问题,请告诉我,如果它不起作用,也请告诉我。
祝你一切顺利
干杯!干杯!