雪花数据库传输到 Postgres

Snowflake DB Transfer to Postgres

我正在尝试将 Snowflake 数据库的完整副本复制到 PostgreSQL 数据库中(每 table/view,每一行)。我不知道完成此任务的最佳方法。我试过使用一个名为 pipelinewise 的包,但我无法获得将雪花视图转换为 postgreSQL table 所需的访问权限(它需要一个唯一的 ID)。长话短说,它对我不起作用。

我现在开始使用 snowflake-sqlalchemy package. So, I'm wondering what is the best way to just make a complete copy of the entire DB. Is it necessary to make a model for each table, because this is a big DB? I'm new to SQL alchemy in general, so I don't know exactly where to start. My guess is with reflections ,但是当我尝试下面的示例时,我没有得到任何结果。

from snowflake.sqlalchemy import URL
from sqlalchemy import create_engine, MetaData

engine = create_engine(URL(
account="xxxx",
user="xxxx",
password="xxxx",
database="xxxxx",
schema="xxxxx",
warehouse="xxxx"
))
engine.connect()
metadata = MetData(bind=engine)

for t in metadata.sorted_tables:
    print(t.name)

我很确定问题不是引擎,因为我确实执行了 validate.py example 并且它确实 return 了预期的版本。任何关于我上面的代码为什么不起作用的建议,或者更好的方法来实现我制作数据库的完整副本的目标,将不胜感激。

试试这个:我让它在我的上运行,但我有一些函数用于我的 sqlalchemy 引擎,所以可能无法按原样运行:

from snowflake.sqlalchemy import URL
from sqlalchemy import create_engine, MetaData
import sqlalchemy sa

engine = sa.create_engine(URL(
account="xxxx",
user="xxxx",
password="xxxx",
database="xxxxx",
schema="xxxxx",
warehouse="xxxx"
))

inspector = sa.inspect(engine)
schema = inspector.default_schema_names 
for table_name in inspector.get_table_names(schema):
     print(table_name)