如何将一行插入到具有类型为 VARIANT 的字段的雪花 table 中?

How to insert a row into snowflake table that have a field with a type VARIANT?

我正在尝试向具有以下结构的雪花 table 中插入一行:

CREATE TABLE dataSources  (
  dataSources_id integer,   
  sourceName varchar (100),
  sourceData VARIANT, 
  created_at timestamp
);

我需要将 json 文件连同有关源本身的其他信息插入 sourceData 字段:

INSERT INTO dataSources (dataSources_id, sourceName, sourceData, created_at)
VALUES (1, 'Source 1', ..., '2020-11-18 00:00:00')

sourceData字段是一个变体,我需要在其中放一个JSON文件,以便与其他数据一起上传。

我尝试使用:

PUT C://path/file.json @internal_stage

我有一个错误:

PUT is not recognized

我尝试将其直接添加到查询中:

INSERT INTO dataSources (dataSources_id, sourceName, sourceData, created_at)
VALUES (1, 'Source 1', PUT C://path/file.json @internal_stage, '2020-11-18 00:00:00')

但由于 SQL 语法错误而无法正常工作。

PUT 是一个 SnowSQL 命令,您还不能 运行 通过 Web UI 它:

https://docs.snowflake.com/en/user-guide/snowsql-use.html

将文件放入@internal_stage后,可以使用COPY命令:

COPY INTO dataSources (dataSources_id, sourceName, sourceData, created_at) 
FROM (SELECT 1, 'Source 1', , '2020-11-18 00:00:00'
FROM @internal_stage ) FILE_FORMAT=(TYPE=JSON);

https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html

如果 JSON 内容不在文件中,您还可以使用此查询插入该行:

INSERT INTO dataSources (dataSources_id, sourceName, sourceData, created_at) 
SELECT 1, 'Source 1', parse_json('{ "name":"test","age":20 }'), '2020-11-18 00:00:00';