我正在尝试将 Snowflake DB 的完整副本复制到 PostgreSQL DB(每个表/视图、每一行)中。我不知道实现这一目标的最佳方法。我试过使用一个名为 pipelinewise 的包,但我无法获得将雪花视图转换为 postgreSQL 表所需的访问权限(它需要一个唯一的 ID)。长话短说,它对我不起作用。
我现在已经开始使用 snowflake-sqlalchemy package。所以,我想知道制作整个数据库的完整副本的最佳方法是什么。有必要为每个表做一个模型吗,因为这是一个大数据库?我一般是 SQL 炼金术的新手,所以我不知道从哪里开始。我的猜测是 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 并且它确实返回了预期的版本。任何关于为什么我上面的代码不起作用的建议,或者更好的方法来实现我制作数据库的完整副本的目标,将不胜感激。
答案 0 :(得分:1)
试试这个:我让它在我的工作,但我有一些用于我的 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)