使用 R、ODBC 和 DBI 时数值超出范围
Numeric value out of range using R, ODBC and DBI
我有一个问题,你可以帮我解决。
我一直在尝试将一些行插入 table。
我给你看 table 定义:
CREATE TABLE Scc_OrdenSevicioFunerarioPagare(
[NumeroPagare] [int] NOT NULL,
[CodigoEstablecimiento] [tinyint] NOT NULL,
[NumeroOrden] [int] NOT NULL,
[CodigoClienteAvalista] [int] NOT NULL,
[ValorRecibido] [money] NOT NULL,
[ValorPagare] [money] NOT NULL,
[FechaPago] [date] NOT NULL,
[CantidadPago] [int] NOT NULL)
使用 R,我曾尝试使用下一个代码插入行:
dsnDesarrollo <- "TESTSQL";
SCC_OrdenServicioFunerarioPagare <- "Scc_OrdenSevicioFunerarioPagare";
con <- dbConnect(odbc::odbc(), dsnDesarrollo, encoding = 'latin1');
dbWriteTable(con, SCC_OrdenServicioFunerarioPagare, dfPagareFuente, append = TRUE);
dbDisconnect(con);
我的数据框dfPagareFuente目前只有一行(仅供测试),数据:
(0 <dbl>, 3 <dbl>, 2214 <dbl>, 56239 <dbl>, 2275 <dbl>, 2600 <dbl>, '2017-01-05' <dttm>, 3 <dbl>)
但是当我尝试 运行 我的 R 代码时,出现错误:
Error in result_insert_dataframe(rs@ptr, values) :
nanodbc/nanodbc.cpp:1587: 22003: [Microsoft][ODBC SQL Server Driver]Valor numérico fuera del intervalo (Numeric value out of range)
任何人都可以告诉我我做错了什么或对此有任何解决方案吗?
永远谢谢你。
顺便说一下,我正在使用 R 的 DBI 和 odbc 库。
终于解决了
问题出在 FechaPago 字段上。在 table 中它有日期数据类型,但在 R 中我试图插入一个日期时间值。所以我不得不在 R.
中用 as.Date 转换值
当我逐列删除以找出问题时,我能够发现。
谢谢史蒂文的回答。
不确定它在这种情况下是否相关 - 但在我的情况下只有日期存在但出现错误 - 我通过使用 as.Date()[=10= 从 Posxit 转换为正常日期格式来解决]
我有一个问题,你可以帮我解决。 我一直在尝试将一些行插入 table。 我给你看 table 定义:
CREATE TABLE Scc_OrdenSevicioFunerarioPagare(
[NumeroPagare] [int] NOT NULL,
[CodigoEstablecimiento] [tinyint] NOT NULL,
[NumeroOrden] [int] NOT NULL,
[CodigoClienteAvalista] [int] NOT NULL,
[ValorRecibido] [money] NOT NULL,
[ValorPagare] [money] NOT NULL,
[FechaPago] [date] NOT NULL,
[CantidadPago] [int] NOT NULL)
使用 R,我曾尝试使用下一个代码插入行:
dsnDesarrollo <- "TESTSQL";
SCC_OrdenServicioFunerarioPagare <- "Scc_OrdenSevicioFunerarioPagare";
con <- dbConnect(odbc::odbc(), dsnDesarrollo, encoding = 'latin1');
dbWriteTable(con, SCC_OrdenServicioFunerarioPagare, dfPagareFuente, append = TRUE);
dbDisconnect(con);
我的数据框dfPagareFuente目前只有一行(仅供测试),数据:
(0 <dbl>, 3 <dbl>, 2214 <dbl>, 56239 <dbl>, 2275 <dbl>, 2600 <dbl>, '2017-01-05' <dttm>, 3 <dbl>)
但是当我尝试 运行 我的 R 代码时,出现错误:
Error in result_insert_dataframe(rs@ptr, values) : nanodbc/nanodbc.cpp:1587: 22003: [Microsoft][ODBC SQL Server Driver]Valor numérico fuera del intervalo (Numeric value out of range)
任何人都可以告诉我我做错了什么或对此有任何解决方案吗?
永远谢谢你。 顺便说一下,我正在使用 R 的 DBI 和 odbc 库。
终于解决了
问题出在 FechaPago 字段上。在 table 中它有日期数据类型,但在 R 中我试图插入一个日期时间值。所以我不得不在 R.
中用 as.Date 转换值当我逐列删除以找出问题时,我能够发现。
谢谢史蒂文的回答。
不确定它在这种情况下是否相关 - 但在我的情况下只有日期存在但出现错误 - 我通过使用 as.Date()[=10= 从 Posxit 转换为正常日期格式来解决]