【问题标题】:Dump CSV files to Postgres and read in R while maintaining column data types将 CSV 文件转储到 Postgres 并在 R 中读取,同时保持列数据类型
【发布时间】:2021-02-12 12:50:56
【问题描述】:

我是 R 新手,并且正在正确处理从 csv 文件读取到数据库的项目重构代码。

工作包括将 csv 文件转储到 Postgres 数据库,并修改现有的 R 脚本以从 db 表而不是 csv 文件中提取输入数据以进行后续转换

现在我遇到了一个问题,即从 dbGetQuery() 返回的数据框列与从 read_csv() 中返回的原始数据框具有不同的模式和类

由于我正在读取的数据有数百列,因此为每列显式指定模式和类并不方便。

有没有一种简单的方法可以使数据帧与旧数据帧具有相同的架构,这样我就可以在数据帧上应用现有代码进行数据转换

即 当我在旧数据帧和 db 中的新数据帧之间进行比较时,这就是我所看到的

  ==================================
   VARIABLE  CLASS.(from csv)  CLASS.(from db)
  ----------------------------------
   col1     numeric           integer64
   col2     numeric           integer
   col3     numeric           integer
  ----------------------------------

【问题讨论】:

    标签: r dataframe etl rscript


    【解决方案1】:

    这通常是不可能的,因为某些 SQL 数据类型(例如 DATE、TIMESTAMP、INTERVAL)在 R 中没有等效项,而 R 数据类型 factor 在 SQL 中没有等效项。根据您的 R 版本,字符串会自动转换为因子,因此使用 stringsAsFactors=FALSE 导入数据至少会很有用。

    【讨论】:

    • 谢谢。猜想没有简单的方法可以做到这一点。将数据转储到数据库时必须一一指定数据类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多