我正在尝试使用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-