将R中的数据帧中的数据插入Teradata数据库上的预定义表中可以很好地工作,并且对于小型(几行)数据帧来说非常快。但是,当我插入许多数字值时,我发现了一个奇怪的行为。插入过程因错误而失败:
result_insert_dataframe(rs @ ptr,值)中的错误:
nanodbc / nanodbc.cpp:1791:HY104:[Teradata] [ODBC Teradata驱动程序] 精度无效:cbColDef值超出范围
这是一个小代表:
/* Teradata database - creating table */
create table upload_test (
ID INTEGER,
val DECIMAL(8,4)
);
插入一个小的数据框可以正常工作:
# R creating dataframe and send it to db
up_test1k = tibble(ID=1:1000, val=0.1234)
con = DBI::dbConnect(odbc::odbc(), ...)
dbplyr::db_insert_into(con, "upload_test", up_test1k)
插入具有2000行的数据框失败:
up_test2k = tibble(ID=1:2000, val=0.1234)
dbplyr::db_insert_into(con, "upload_test", up_test2k)
Error in result_insert_dataframe(rs@ptr, values) :
nanodbc/nanodbc.cpp:1791: HY104: [Teradata][ODBC Teradata Driver] Invalid
precision: cbColDef value out of range
与
相同的行为(可以行1000行,失败2000行)插入仅包含整数和字符的较大数据框(> 10'000行)可以正常工作。
系统信息: