在将大熊猫数据框架存储到雪花上时,如何解决编程错误



我正在尝试使用sqlalchemy存储我在sagemaker中创建的数据框架,以供雪花。该代码仅适用于某些列。当我添加其他列时,即使它们具有相同的数据类型,也会给我一个错误。在下面的示例中,如果我仅上传ta_id,则可以工作,但是如果我上传cluster_id,则代码会给我带来错误。

我检查了Sqlalchemy网站,但没有找到有关编程错误的太多信息。

SQL代码用于创建表

CREATE OR REPLACE TABLE test.m (
    TA_ID string,
     Cluster_ID string
)

Python代码

master2.to_sql(name='m', con=engine2, if_exists='append',  schema='test',index=False, index_label=None, chunksize=2000 )

编程:

(snowflake.connector.errors.ProgrammingError) 000904 (42000): SQL compilation error: error line 1 at position 29
invalid identifier '"Cluster_ID"' [SQL: 'INSERT INTO test.m ("TA_ID", "Cluster_ID") VALUES (%(TA_ID)s, %(Cluster_ID)s)'] [parameters: ({'TA_ID': 'TA007', 'Cluster_ID': '0'}, {'TA_ID': 'TA007', 'Cluster_ID': '16'}, {'TA_ID': 'TA007', 'Cluster_ID': '40'}, {'TA_ID': 'TA007', 'Cluster_ID': '15'}, {'TA_ID': 'TA007', 'Cluster_ID': '29'}, {'TA_ID': 'TA007', 'Cluster_ID': '23'}, {'TA_ID': 'TA007', 'Cluster_ID': '9'}, {'TA_ID': 'TA007', 'Cluster_ID': '25'}, {'TA_ID': 'TA007', 'Cluster_ID': '42'}, {'TA_ID': 'TA007', 'Cluster_ID': '28'})] (Background on this error at: http://sqlalche.me/e/f405)

您已经在SQL中双重引用了标识符。即" cluster_id"。如果您还没有使用列名创建表格,则您的SQL必须完全为列名。

so:

create table foo (
  "Column_ID" varchar 
);
select column_id from foo;  -- fails
select Column_ID from foo;  -- fails
select "Column_id" from foo;  -- fails
select "Column_ID" from foo;  -- succeeds

但是:

create table foo (
  Column_ID varchar
);
select column_id from foo;  -- succeeds
select Column_ID from foo;  -- succeeds

我建议您从SQL语句中删除双重报价,并查看是否可以正确解决。如果仍然失败,请确保您的SQL的情况与已定义的列名称完全匹配。

-paul-

最新更新