如何解决使用Perl DBI从原始数据文件复制到雪花表
关于perl dbi和雪花的信息不多,因此我将对此进行介绍。我有一个原始文件,其标题包含在第1行中。此精确的“复制到”命令可从雪花gui进行工作。我不确定是否可以接受这个确切的命令并将其放入perl准备并执行。
COPY INTO DBTABLE.LND_LND_STANDARD_DATA FROM (
SELECT SPLIT_PART(METADATA$FILENAME,'/',4) as SEAT_ID,$1:auction_id_64 as AUCTION_ID_64,DATEADD(S,\$1:date_time,'1970-01-01') as DATE_TIME,$1:user_tz_offset as USER_TZ_OFFSET,$1:creative_width as CREATIVE_WIDTH,$1:creative_height as CREATIVE_HEIGHT,$1:media_type as MEDIA_TYPE,$1:fold_position as FOLD_POSITION,$1:event_type as EVENT_TYPE
FROM @DBTABLE.lnd.S3_STAGE_READY/pr/data/standard/data_dt=20200825/00/STANDARD_FILE.gz.parquet)
pattern = '.*.parquet' file_format = (TYPE = 'PARQUET' SNAPPY_COMPRESSION = TRUE)
ON_ERROR = 'SKIP_FILE_10%'
my $SQL = "COPY INTO DBTABLE.LND_LND_STANDARD_DATA FROM (
SELECT SPLIT_PART(METADATA\$FILENAME,\$1:auction_id_64 as AUCTION_ID_64,\$1:user_tz_offset as USER_TZ_OFFSET,\$1:creative_width as CREATIVE_WIDTH,\$1:creative_height as CREATIVE_HEIGHT,\$1:media_type as MEDIA_TYPE,\$1:fold_position as FOLD_POSITION,\$1:event_type as EVENT_TYPE
FROM \@DBTABLE.lnd.S3_STAGE_READY/pr/data/standard/data_dt=20200825/00/STANDARD_FILE.gz.parquet)
pattern = '.*.parquet' file_format = (TYPE = 'PARQUET' SNAPPY_COMPRESSION = TRUE)
ON_ERROR = 'SKIP_FILE_10%'";
my $sth = $dbh->prepare($sql);
$sth->execute;
在查看雪花的输出时,我看到此错误
位置4处的语法错误第3行出现意外的'?'。 位置13的语法错误第4行出现意外的'?'。
从(
复制到DBTABLE.LND_LND_STANDARD_DATA SELECT SPLIT_PART(METADATA $ FILENAME,'/',4)作为SEAT_ID,
一美元为AUCTION_ID_64,
DATEADD(S,$ 1?,'1970-01-01')作为DATE_TIME,
一美元作为USER_TZ_OFFSET,
一美元为CREATIVE_WIDTH,
一美元为CREATIVE_HEIGHT,
一美元作为MEDIA_TYPE
是否需要为每个列创建绑定变量?我通常会从文件中提取数据并将其放入变量中,但这是不同的,因为我无法首先读取原始文件,它必须直接从复制到命令中来。
任何帮助将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。