data = db.Column(snowsql.VARIANT)
有人有做这事的经验吗?
更新:
我要添加的数据是一个字典的python列表:
new_data['data'] = [{'component': None, 'display_name': 'blah', 'key': None, 'row': {'display_name': 'blah', 'type': 'blah'}, 'sub_type': None, 'type': 'blah'}]
new_blah = Blah(
data = json.dumps(new_data['data'])
)
"[{\"component\":null,\"display_name\":\"blah\",\"key\":null,\"row\":{\"display_name\":\"blah\",\"type\":\"blah\"},\"sub_type\":null,\"type\":\"blah\"}]"
据我所知,你正在尝试的目前是不可能的。我也遇到了同样的问题,尽管我对SQLAlchemy自定义类型有了很大的了解,但我目前无法解决它。
问题如下:
variant
列中,需要使用雪花函数parse_json
.select
子句的上下文中,即不能将其与insert...values
格式一起使用(请参见雪花社区)class SnowflakeJSON(TypeDecorator):
impl = VARIANT
def process_bind_param(self, value, dialect):
return json_serialize(value)
def process_result_value(self, value, dialect):
return json_deserialize(value)
def bind_expression(self, bindparam):
return func.PARSE_JSON(bindparam, type_=self)
def copy(self, **kw):
return SnowflakeJSON()
INSERT INTO my_table (key, data)
VALUES ('001', PARSE_JSON('{"test": "hello world"}'));
但是,根据上面的雪花社区条目,values
格式不起作用,您需要以下格式:
INSERT INTO my_table (key, data)
SELECT '001', PARSE_JSON('{"test": "hello world"}');
作为后退,您可以始终使用将JSON对象存储为varchar
的列类型:
class SnowflakeJSON(TypeDecorator):
impl = String
def process_bind_param(self, value, dialect):
return json_serialize(value)
def process_result_value(self, value, dialect):
return json_deserialize(value)
def copy(self, **kw):
return SnowflakeJSON()
这样,您显然失去了将JSON字符串存储为variant
数据类型的好处。但是,您可以在以后的阶段,甚至在查询中对其进行解析:
SELECT PARSE_JSON(text)['test'] from my_table;
使用odbctest和Snowflake 64位ODBC驱动程序for Windows: 这是odbc跟踪的相关部分: sqdrsvc 3dfc-52bc输入SQLPrepare HSTMT 0x000000435c961620 UCHAR*0x000000435d262720[140]“插入”sfdest“.”qauser“.”bt14726“(”varchar_10_col“,”varchar
如何使用雪花存储过程将current_date()bind变量插入到表中 创建或替换过程abc(“p_message_id”浮点数、“p_theater”字符串、“p_month”字符串、“p_message”字符串、“p_message”字符串、“p_start_date”字符串、“p_end_date”字符串、“p_action”字符串、“p_msg_type”字符串、“p_logged_us
我试图使用以下代码将数据加载到雪花,但得到一个错误。 tmp是从Snowflake下载的,该表使用RStudio:
我正在搜索TABLE命令的官方文档(它与TABLE( ))不同。 我搜索了所有命令/查询语法,但没有太多成功。
我在收集元数据stom雪花-“帐户使用视图”时发现,表中的值(ROW_COUNT,BYTES)没有更新。我预计会有一些延迟,但对于大多数对象,我的值为“0”。我必须清楚地说明,那些桌子并不是新的。他们在那里好几个月了。 在与information_schema.tables进行比较时,我看到了最新的数字。其他(也是ACCOUNT_USAGE)视图TABLE_STORAGE_METRICS至少显示有