在做数据准备时,偶而也会遇到有.csv文件需要读取的情况,dbt提供seed功能读取.csv文件到数据库。读取后的表,可以使用ref()方法引用。

测试环境

  • dbt 1.5
  • 数据库:Postgres 14

准备测试数据

可以使用自己准备的测试.csv文件。也可以使用 jafgen 包来生成测试数据:

  1. 执行pip install jafgen 命令安装jafgen
  2. 安装完成后,执行 jafgen --years 1 会在当前目录下的jaffle-data目录生成一年的测试数据,包括:
    • raw_customers.csv 客户ID和名称
    • raw_items.csv 商品SKU和order_id关联
    • raw_orders.csv 订单时间、门店ID、总额等
    • raw_products.csv 产品价格和描述
    • raw_stores.csv 门店信息
    • raw_supplies.csv 供应信息
  3. jaffle-data 目录及文件 copy<dbt-project>/seeds/ 目录下。

直接导入数据库

直接执行dbt seed -s raw_items ,会将 raw_items.csv 中的数据导入到在profiles.yml配置中的默认schema。9.5w行数据导入,大约需要50秒左右。
dbt的特性是不允许跨数据库的,但可以用加后缀的方式,来指定不同的schema

指定schema

修改 dbt-project.yml 配置,可以将用加后缀的方式,将 .csv 导入到指定的 schema
比如我的profiles.yml 中配置了 schema: test ,即默认schematest

dbt-project.yml 添加以下配置,可以将数据导入到 test_sed 的场景中,其中:
* my_test_dbt 是项目名称
* jaffle-dataseeds目录下的 jaffle-data 目录,即 seed 的路径
* +schema: sed :在默认场景名后面,增加后缀 sed

# dbt-project.ymlseeds:my_test_dbt:jaffle-data:+schema: sed

指定字段类型

dbt会提供默认的字段类型,也可以在dbt-project.yml 中还可以配置指定类型。

  • raw_items,模型名称
  • +column_types,指定字段类型,idorder_idsku是字段名称。
    注意:如果 raw_items 表已存在,需要先删除表再重新执行 dbt run -s raw_items 才能生效,直接执行不会修改字段类型。
# dbt-project.ymlseeds:my_test_dbt:jaffle-data:+schema: sedraw_items:+column_types:id: varchar(36)order_id: varchar(36)sku: varchar(36)

参考

  • dbt官方文档

【dbt】使用seed导入csv文件相关推荐

  1. 向oracle中导入*.csv文件

    向oracle中导入*.csv文件 1.什么是*.csv,如何得到? 里面存放的是数据表.每行代表数据库表格的一行, 每行中,每两个数据中间由逗号","分割. *.csv可以通过& ...

  2. Oracle数据库表导出和导入csv文件操作

    Oracle数据库表导出和导入csv文件操作 数据库是Oracle 9i 1.导出csv文件 这个十分简单,用pl/sql工具即可,首先选中要导出的表,右键选择Query data,在左侧出现的窗口中 ...

  3. python导入csv文件-jupyter 导入csv文件方式

    先将准备的文件上传到自己的jupyter工作空间 import numpy as np import pandas as pd housing = pd.read_csv('housing.csv') ...

  4. python导入csv文件-python如何导入csv文件格式

    1.通过标准的Python库导入CSV文件 Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文件.当CSV文件被读入后,可以利用这些数据生成一个NumPy数组 ...

  5. python导入csv文件-python如何导入csv

    1.通过标准的Python库导入CSV文件 Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文件.当CSV文件被读入后,可以利用这些数据生成一个NumPy数组 ...

  6. C# 将List中的数据导入csv文件中

    //http://www.cnblogs.com/mingmingruyuedlut/archive/2013/01/20/2849906.html C# 将List中的数据导入csv文件中 将数据保 ...

  7. python如何将utf-8编码文件改为ansi编码文件_Excel导入CSV文件乱码?两个小方法让文件正常显示...

    最近网友抱怨,收到别人发来的数据表,打开后长这样: CSV再EXCEL中显示为乱码 除了数字,其他是啥玩意儿 完全乱码... (乱码!乱马!乱吗?乱!) 但是当使用记事本打开,检查确认是否文件有问题时 ...

  8. excel导入csv文件_如何将包含以0开头的列的CSV文件导入Excel

    excel导入csv文件 Microsoft Excel will automatically convert data columns into the format that it thinks ...

  9. mysql linux导入csv主键,MySQL导入csv文件内容到Table及数据库的自增主键设置

    写在前面 目的是测试将csv文件内容导入到表中, 同时记录一下自增主键的设置. 测试采用MySQL8.0. 新建表customer_info如下, 未设置主键. 修改上表, 添加主键id, 并设置为自 ...

最新文章

  1. java 新浪天气预报接口_根据新浪天气API获取各地天气状况(Java实现)
  2. Android Gradle查询器
  3. echarts地图json实现
  4. python进行数据分析需要安装哪两个库_对Python进行数据分析_关于Package的安装问题...
  5. 95-862-045-源码-runtime-blob-BlobService
  6. 会议录音被误删了用EasyRecovery怎么恢复
  7. java调用python机器学习模型的坑
  8. 带通滤波器中心频率带宽matlab,带通滤波器频率设置
  9. 台达PLC实现伺服电机的正反转
  10. 常用中文字体的Unicode编码
  11. 自然常数e的由来(简单通俗易于理解自然常数e)
  12. vue3中使用swiper7及autoplay无效问题
  13. android 游戏循环 帧速,适用于Android的Firemonkey游戏循环
  14. 图像预处理(Evision)
  15. DFS入门级(模板)
  16. 可以进行论文降重吗?
  17. newuoa matlab包,PDFO首页、文档和下载 - Powell 无导数优化求解器
  18. 「运维有小邓」ADAudit Plus(AD域审计工具)的主要优势?
  19. Java字符串反转函数reverse()
  20. 新概念2 课文和单词(4)

热门文章

  1. c语言编程求弧度值,求弧度计算方法.编程方面,弧度计算公式
  2. 【升级版学生信息管理系统员工工资信息管理系统】+文件操作+更多细节
  3. 转:管理禁区把自己完全孤立、封闭起来
  4. 常用缩略词 ACRONYMS
  5. 稳健性检验!稳健性检验!
  6. 手写简易VueRouter
  7. lower_bound函数的个人理解
  8. python中prin输出时出现中文乱码
  9. 前端moment库时间戳转标准时间不准确的问题解决
  10. 手机触屏触摸特效javascript-TouchSwipe(依赖于jquery库)中文说明