【发布时间】:2021-09-19 06:11:53
【问题描述】:
我正在使用 python 和 sqlalchemy 将数据摄取到雪花表中。我创建的这些表都需要引号来查询表名和列名。例如: select * from "database"."schema"."table" where "column" = 2; 将运行,而 select * from database.schema.table where column = 2; 将不会运行。区别在于引号。
我了解,如果在 Snowflake 中使用引号创建表,则查询它时需要引号。但是,我只在 pandas 数据框中放置了一个 excel 文件,然后使用 sqlalchemy 和 pd.to_sql 创建表。我的代码示例:
engine = create_engine(URL(
account = 'my_account',
user = 'my_username',
password = 'my_password',
database = 'My_Database',
schema = 'My_Schema',
warehouse = 'My_Wh',
role='My Role',
))
connection = engine.connect()
df.to_sql('My_Table', con=engine, if_exists='replace', index=False, index_label=None, chunksize=16384)
sqlalchemy 会自动创建带引号的表吗?这是架构的问题吗?我没有设置。有没有办法解决这个问题?
感谢您的帮助,非常感谢!
【问题讨论】:
-
您的一个或多个对象(db/schema/table/column)是否不符合未加引号的标识符的要求?
-
架构中的所有列和表都不符合取消引用标识符的要求。但是,我使用上述方法(sqlalchemy)在此模式中创建了所有表。可以不带引号查询数据库中的其他模式。
标签: python sql pandas sqlalchemy snowflake-cloud-data-platform