将命名阶段的数据合并到 Table
Merge Data into Table from Named Stage
我无法从内部命名阶段将数据合并到 Snowflake table。我确实参考了知识库article。
My code is pasted below and the error is also pasted below.
代码:
MERGE INTO ORDERS TGT
USING
(
SELECT ::NUMBER o_orderkey,
::NUMBER o_custkey,
::STRING o_orderstatus,
::FLOAT o_totalprice,
TO_DATE(::VARCHAR, 'YYYY-MM-DD') O_ORDERDATE,
::STRING o_orderpriority,
::STRING o_clerk,
::STRING o_shippriority,
::STRING o_comment
from '@STG_IVP_REF_BULK_DATA_MIGRATION/ORDERS/Snowflake_DB_Data_12-Feb-2020_02-59-50-PM.csv.gz'
(file_format = (field_delimiter = '|'))
)SRC
ON SRC.O_ORDERKEY = TGT.O_ORDERKEY
WHEN MATCHED
THEN
UPDATE SET TGT.LAST_MODIFIED_DATE = CURRENT_TIMESTAMP()::TIMESTAMP_NTZ
WHEN NOT MATCHED
THEN
INSERT (o_orderkey, o_custkey, o_orderstatus, o_totalprice, O_ORDERDATE, o_orderpriority, o_clerk, o_shippriority, o_comment)
VALUES (o_orderkey, o_custkey, o_orderstatus, o_totalprice, O_ORDERDATE, o_orderpriority, o_clerk, o_shippriority, o_comment);
错误输出:
SQL Error [2018] [22023]: SQL compilation error:
Invalid argument [2=>[unresolved function: "="](FILE_FORMAT, [unresolved function: "="](FIELD_DELIMITER, '|'))] for table function. Table function argument is required to be a constant.
您能否创建一个 file_format 对象来将分隔符定义为“|”,并在您的查询中使用它?例如:
CREATE FILE FORMAT myformat TYPE = 'CSV' FIELD_DELIMITER = '|';
MERGE INTO ORDERS TGT
USING
(
SELECT ::NUMBER o_orderkey,
::NUMBER o_custkey,
::STRING o_orderstatus,
::FLOAT o_totalprice,
TO_DATE(::VARCHAR, 'YYYY-MM-DD') O_ORDERDATE,
::STRING o_orderpriority,
::STRING o_clerk,
::STRING o_shippriority,
::STRING o_comment
from '@STG_IVP_REF_BULK_DATA_MIGRATION/ORDERS/Snowflake_DB_Data_12-Feb-2020_02-59-50-PM.csv.gz'
(file_format => myformat)
)SRC
ON SRC.O_ORDERKEY = TGT.O_ORDERKEY
WHEN MATCHED
THEN
UPDATE SET TGT.LAST_MODIFIED_DATE = CURRENT_TIMESTAMP()::TIMESTAMP_NTZ
WHEN NOT MATCHED
THEN
INSERT (o_orderkey, o_custkey, o_orderstatus, o_totalprice, O_ORDERDATE, o_orderpriority, o_clerk, o_shippriority, o_comment)
VALUES (o_orderkey, o_custkey, o_orderstatus, o_totalprice, O_ORDERDATE, o_orderpriority, o_clerk, o_shippriority, o_comment);
从staging查询数据时,需要使用FILE_FORMAT个对象:
https://docs.snowflake.net/manuals/user-guide/querying-stage.html#query-syntax-and-parameters
我无法从内部命名阶段将数据合并到 Snowflake table。我确实参考了知识库article。
My code is pasted below and the error is also pasted below.
代码:
MERGE INTO ORDERS TGT
USING
(
SELECT ::NUMBER o_orderkey,
::NUMBER o_custkey,
::STRING o_orderstatus,
::FLOAT o_totalprice,
TO_DATE(::VARCHAR, 'YYYY-MM-DD') O_ORDERDATE,
::STRING o_orderpriority,
::STRING o_clerk,
::STRING o_shippriority,
::STRING o_comment
from '@STG_IVP_REF_BULK_DATA_MIGRATION/ORDERS/Snowflake_DB_Data_12-Feb-2020_02-59-50-PM.csv.gz'
(file_format = (field_delimiter = '|'))
)SRC
ON SRC.O_ORDERKEY = TGT.O_ORDERKEY
WHEN MATCHED
THEN
UPDATE SET TGT.LAST_MODIFIED_DATE = CURRENT_TIMESTAMP()::TIMESTAMP_NTZ
WHEN NOT MATCHED
THEN
INSERT (o_orderkey, o_custkey, o_orderstatus, o_totalprice, O_ORDERDATE, o_orderpriority, o_clerk, o_shippriority, o_comment)
VALUES (o_orderkey, o_custkey, o_orderstatus, o_totalprice, O_ORDERDATE, o_orderpriority, o_clerk, o_shippriority, o_comment);
错误输出:
SQL Error [2018] [22023]: SQL compilation error:
Invalid argument [2=>[unresolved function: "="](FILE_FORMAT, [unresolved function: "="](FIELD_DELIMITER, '|'))] for table function. Table function argument is required to be a constant.
您能否创建一个 file_format 对象来将分隔符定义为“|”,并在您的查询中使用它?例如:
CREATE FILE FORMAT myformat TYPE = 'CSV' FIELD_DELIMITER = '|';
MERGE INTO ORDERS TGT
USING
(
SELECT ::NUMBER o_orderkey,
::NUMBER o_custkey,
::STRING o_orderstatus,
::FLOAT o_totalprice,
TO_DATE(::VARCHAR, 'YYYY-MM-DD') O_ORDERDATE,
::STRING o_orderpriority,
::STRING o_clerk,
::STRING o_shippriority,
::STRING o_comment
from '@STG_IVP_REF_BULK_DATA_MIGRATION/ORDERS/Snowflake_DB_Data_12-Feb-2020_02-59-50-PM.csv.gz'
(file_format => myformat)
)SRC
ON SRC.O_ORDERKEY = TGT.O_ORDERKEY
WHEN MATCHED
THEN
UPDATE SET TGT.LAST_MODIFIED_DATE = CURRENT_TIMESTAMP()::TIMESTAMP_NTZ
WHEN NOT MATCHED
THEN
INSERT (o_orderkey, o_custkey, o_orderstatus, o_totalprice, O_ORDERDATE, o_orderpriority, o_clerk, o_shippriority, o_comment)
VALUES (o_orderkey, o_custkey, o_orderstatus, o_totalprice, O_ORDERDATE, o_orderpriority, o_clerk, o_shippriority, o_comment);
从staging查询数据时,需要使用FILE_FORMAT个对象:
https://docs.snowflake.net/manuals/user-guide/querying-stage.html#query-syntax-and-parameters