【发布时间】:2019-09-25 10:47:52
【问题描述】:
我有一个从 csv 文件中获取的数据框,该文件包含几个带有日期的列。日期的格式为12/05/2019 或2019-08-15T00:00:00Z,具体取决于列。
我已使用以下代码清理了列:
transform(DataframeName,
First_Date = dmy(First_Date)
Second_Date = ymd_hms(Second_Date))
这成功地将所有日期转换为YYYY-MM-DD 格式。
我正在尝试使用以下命令将此数据框导入 SQL 数据库:
dbWriteTable(con, "DatabaseTable", DataframeName, append = TRUE)
每当我这样做时,我都会收到以下错误:
result_insert_dataframe(rs@ptr, values) 中的错误: nanodbc/nanodbc.cpp:1587:22018:[Microsoft][ODBC Driver 17 for SQL 服务器]强制转换规范的字符值无效
我已确认导致此错误的唯一列是日期列,它们都是导致此错误的原因。我尝试将日期转换为字符串,将字符串转换回不同的日期,使用as.Date,导入数字,将空值转换为NA,但没有任何效果。当我尝试再次转换列(尝试使其成为字符串文字)时,它会恢复为原始值。例如:
原始值:12/05/2019
transform(DataframeName,
First_Date = dmy(First_Date)
下一个值:2019-05-12
sqlData(con, DataframeName, row.names = NA
最后一个值:12/05/2019
就好像它从一开始就没有真正转变过一样。
我之前只使用 as.Date 从非常相似的 csv 文件中导入了日期列,所以我无法弄清楚错误是什么。
【问题讨论】:
标签: r sql-server date lubridate