使用R,ODBC和DBI的数值超出范围

时间:2018-08-06 22:34:25

标签: sql r sql-server odbc dbi

我有一个问题,您可以帮助我解决。 我一直试图在表中插入一些行。 我给你看表的定义:

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代码时,出现了错误:

  

result_insert_dataframe(rs @ ptr,values)中的错误:     nanodbc / nanodbc.cpp:1587:22003:[Microsoft] [ODBC SQL Server驱动程序] Valornuméricofuera del intervalo(数值超出范围)

任何人都可以给我一个有关我做错了什么或对此有任何解决方案的线索吗?

总是谢谢你。 顺便说一下,我正在使用R的DBI和odbc库。

2 个答案:

答案 0 :(得分:0)

最后我解决了。

问题出在FechaPago领域。在表中,它具有日期数据类型,但是在R中,我试图插入一个datetime值。因此,我不得不在R中将as.Date转换为值。

当我逐列删除以发现问题时,我才能够发现。

谢谢史蒂文的回答。

答案 1 :(得分:0)

不确定在这种情况下是否相关 - 但在我的情况下只有日期存在但出现错误 - 我通过使用 as.Date() 将 Posxit 转换为正常日期格式来解决