微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用默认值填充雪花表而不从文件数据中选择默认列值

如何解决使用默认值填充雪花表而不从文件数据中选择默认列值

我正在尝试动态加载表(删除表并加载数据 - 类似于截断和加载)。假设表需要有 4 个字段,ID、Name、SeqNo 和 DtTimeStamp。

数据是从外部暂存的 csv\text 文件中选择的,该文件只有两个字段(ID 和名称)。下面的查询给出了许多列不匹配的错误。如何解决这个问题?

创建或替换表 SOMetaBLENAME(ID NUMBER(38,0),Name VARCHAR(255),SeqNo NUMBER(38,0) NOT NULL AUTOINCREMENT,DtTimeStamp TIMESTAMP_NTZ(9) NOT NULL DEFAULT CURRENT_TIMESTAMP()) AS SELECT A.$1 AS ID,A.$2 AS 名称来自@EXTERNALSTAGE/SOME_FILE.CSV A;

如果你仔细看上面的 sql 语句,我的表有两个额外的字段,需要为它加载的每一行自动填充。但我无法让它工作?

非常感谢任何建议。

提前致谢! 沙迪亚

解决方法

CREATE TABLE … AS SELECT (CTAS)

CREATE TABLE <table_name> ( <col1_name>,<col2_name>,... ) AS SELECT ...

指定的列名数量必须与查询中 SELECT 列表项的数量相匹配;列的类型是从查询产生的类型推断出来的。

要解决它,CTAS 和 INSERT INTO 可以是两个单独的步骤:

CREATE OR REPLACE TABLE SOMETABLENAME(
    ID NUMBER(38,0),Name VARCHAR(255),SeqNo NUMBER(38,0) NOT NULL AUTOINCREMENT,DtTimeStamp TIMESTAMP_NTZ(9) NOT NULL DEFAULT CURRENT_TIMESTAMP()
);

-- here INSERT/SELECT have matching column list
INSERT INTO SOMETABLENAME(ID,Name)
SELECT A.$1 AS ID,A.$2 AS Name FROM @EXTERNALSTAGE/SOME_FILE.CSV A;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?