【问题标题】:Snowflake DB Transfer to Postgres雪花数据库转移到 Postgres
【发布时间】:2021-06-14 15:40:53
【问题描述】:

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

我现在开始使用snowflake-sqlalchemy package。所以,我想知道制作整个数据库的完整副本的最佳方法是什么。是否需要为每个表制作模型,因为这是一个大数据库?一般来说,我是 SQL alchemy 的新手,所以我不知道从哪里开始。我的猜测是 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,它确实返回了预期的版本。任何关于我上面的代码为什么不起作用的建议,或者实现我制作数据库完整副本的目标的更好方法将不胜感激。

【问题讨论】:

  • 我正在为 URLcreate_engine from snowflake.sqlalchemy import URLfrom sqlalchemy import create_engine 进行正确的导入
  • 这是一次性的事情还是需要让 Postgres 与 Snowflake 保持同步?
  • 嘿@MikeWalton,Snyc 不是必需的,如果需要,我不介意每天运行脚本。事实上,雪花数据库通过数据转储本身每天更新一次,因此无需考虑实时更新。
  • 好的 - 对于您的实际问题,您是否查看过 Snowflake SQLAlchemy 库中的检查器 API 集合? docs.snowflake.com/en/user-guide/…
  • Snowflake 的 SQLAlchemy 可能没有该功能。没有把握。试试检查器功能,看看是否更好。

标签: python sqlalchemy etl snowflake-cloud-data-platform sqlalchemy-migrate


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多