javascript - 即使使用 JSON.parse,Snowflake 也无法将对象绑定到查询中以将其插入到变体列中
问题描述
此存储过程将获取一个对象并将其插入到表的变量列中:
try {
var table_query = "CREATE OR REPLACE TEMPORARY TABLE FIELD_NAME_TABLE (field_variant VARIANT)";
var table_query_stmt_result = snowflake.createStatement({sqlText: table_query}).execute();
var insert_query = "INSERT INTO FIELD_NAME_TABLE SELECT ?";
var insert_stmt = snowflake.createStatement({sqlText: insert_query, binds: [(TABLE_COL_AND_FIELDS)]});
var result = insert_stmt.execute();
result.next();
return result;
return result['number of rows inserted'];
}
catch(err) {
return err.message;
}
TABLE_COL_AND_FIELDS
是具有以下结构的对象:
{
"field1": "val1",
"field2": "val2"
}
运行脚本时出现以下错误:
"Invalid binds argument[object Object]. Error: Unsupported type for binding argument 2undefined"
我添加JSON.parse(TABLE_COL_AND_FIELDS)
并收到此错误:
“位置 1 处 JSON 中的意外标记 o”
我试过:
(TABLE_COL_AND_FIELDS).toString()
我有一个错误:
"SQL compilation error:\nExpression type does not match column data type, expecting VARIANT but got VARCHAR(15) for column FIELD_VARIANT"
FIELD_VARIANT
VARIANT
是临时表中类型为的列。
解决方案
我通过添加parse_json()
到查询文本和部分JSON.stringify()
中找到了解决方案binds
。脚本如下:
try {
var table_query = "CREATE OR REPLACE TEMPORARY TABLE FIELD_NAME_TABLE (field_variant VARIANT)";
var table_query_stmt_result = snowflake.createStatement({sqlText: table_query}).execute();
var insert_query = "INSERT INTO FIELD_NAME_TABLE SELECT parse_json(?)";
var insert_stmt = snowflake.createStatement({sqlText: insert_query, binds: [JSON.stringify(TABLE_COL_AND_FIELDS)]});
var result = insert_stmt.execute();
result.next();
return result;
return result['number of rows inserted'];
}
catch(err) {
return err.message;
}
推荐阅读
- python - Python Pandas - 基于 2 个数据框的列删除行
- javascript - 问题放置我想要的 div
- php - 带有 ParamConverter 注释的 Symfony4 Twig 路径
- aws-lambda - amazon lex 聊天机器人可以接受图像作为输入吗?
- amazon-web-services - 如何使用 npm 包(如 activedirectory、ldapjs 或 ldap-client)访问 AWS Microsoft AD
- python - python中的dijkstra实现-输出并不总是正确的
- spring-mvc - 在 Controller 的 RequestMapping 中启用 ConditionalOnProperty
- google-apps-script - 使用云端硬盘搜索结果会导致迭代器错误
- python - tf.image.sample_distorted_bounding_box 中“bounding_boxes”和“min_object_covered”的功能?
- android - 如何根据条件显示布局?