新手使用dbt跨项目迁移API处理后数据至ERP项目遇阻求助
解决dbt跨项目数据迁移及依赖识别问题
方法一:修正dbt-meshify配置,确保依赖正常识别
- 先检查ERP项目中
dependencies.yml的格式是否正确,本地项目依赖需用local字段指定路径:packages: - local: ../api-project # 替换为你的API项目实际路径 - 执行
dbt deps拉取依赖,这是dbt识别本地项目依赖的必要步骤,跳过会导致依赖无法被识别 - 重新运行dbt-meshify命令,确保项目路径参数正确传递:
dbt-meshify connect --project-paths ./api-project ./erp-project - 确认两个项目的
dbt_project.yml中name字段唯一,dbt通过该字段区分不同项目,重名会导致依赖识别失败
方法二:直接在ERP项目引用API项目模型(无需meshify)
如果只是需要将API项目处理后的数据同步到ERP数据库,无需依赖mesh工具,直接通过跨项目引用实现:
- 在ERP项目的
models目录下新建同步模型,用带项目名的ref函数引用API项目的模型:
注:{{ config( materialized='table', database='erp_database', # 替换为你的ERP数据库名 schema='target_schema' # 替换为目标存储schema ) }} select * from {{ ref('api_project_name', 'processed_api_data') }}api_project_name是API项目dbt_project.yml中配置的name字段值,processed_api_data是API项目中已处理完成的模型名 - 同样需要在ERP项目的
dependencies.yml添加API项目的本地依赖,执行dbt deps后,运行dbt run即可将API数据同步到ERP库
方法三:小批量数据用seed或自定义宏迁移
- 若数据量较小,可在API项目中将处理后的数据导出为CSV文件,然后在ERP项目中通过
dbt seed命令导入到ERP数据库 - 针对特定数据库,可编写自定义宏执行跨库复制操作,比如PostgreSQL的
COPY、MySQL的LOAD DATA命令,直接实现数据迁移
额外排查点
- 确认
profiles.yml中两个数据源的配置正确,dbt运行时需同时具备访问两个数据源的权限 - 检查dbt-meshify版本,旧版本可能存在依赖识别bug,可执行
pip install --upgrade dbt-meshify升级到最新版
内容的提问来源于stack exchange,提问作者Mr. Tooth
相关产品推荐
相关产品推荐

