【问题标题】:Why can I not use dbWriteTable for SQL Server?为什么我不能将 dbWriteTable 用于 SQL Server?
【发布时间】:2020-05-05 18:25:05
【问题描述】:

有谁知道是否会改变某些东西来破坏它?还是我错过了什么?

 data <- data.frame(x = rnorm(10), y = rnorm(10))

 cxn <- DBI::dbConnect(odbc::odbc(),
                      driver = 'ODBC Driver 17 for SQL Server',
                      server = dbServer,
                      database = dbName,
                      trusted_connection = 'yes',
                      port = port)

 DBI::dbWriteTable(cxn, tblName, data, append = T)

我收到以下错误:

(function (classes, fdef, mtable) 中的错误:无法找到 用于签名“Microsoft”的函数“dbWriteTable”的继承方法 SQL Server”、“字符”、“列表”’

这是我的会话信息:

R version 3.6.2 (2019-12-12)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] DBI_1.0.0         magrittr_1.5      lubridate_1.7.4   data.table_1.12.2
 [5] sloop_1.0.1       forcats_0.4.0     stringr_1.4.0     dplyr_0.8.3      
 [9] purrr_0.3.2       readr_1.3.1       tidyr_0.8.3       tibble_2.1.3     
[13] ggplot2_3.1.1     tidyverse_1.2.1   vctrs_0.2.0       devtools_2.0.2   
[17] usethis_1.5.1     conflicted_1.0.4 

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.1        lattice_0.20-38   prettyunits_1.0.2 ps_1.3.0         
 [5] assertthat_0.2.1  zeallot_0.1.0     rprojroot_1.3-2   digest_0.6.20    
 [9] R6_2.4.0          cellranger_1.1.0  plyr_1.8.4        odbc_1.1.6       
[13] backports_1.1.4   httr_1.4.0        pillar_1.4.2      rlang_0.4.0      
[17] lazyeval_0.2.2    readxl_1.3.1      rstudioapi_0.10   callr_3.2.0      
[21] blob_1.1.1        desc_1.2.0        bit_1.1-14        munsell_0.5.0    
[25] broom_0.5.2       compiler_3.6.2    modelr_0.1.4      pkgconfig_2.0.2  
[29] pkgbuild_1.0.3    tidyselect_0.2.5  audio_0.1-6       crayon_1.3.4     
[33] withr_2.1.2       grid_3.6.2        nlme_3.1-142      jsonlite_1.6     
[37] gtable_0.3.0      scales_1.0.0      cli_1.1.0         stringi_1.4.3    
[41] fs_1.3.1          remotes_2.0.4     testthat_2.1.1    xml2_1.2.0       
[45] generics_0.0.2    tools_3.6.2       bit64_0.9-7       glue_1.3.1       
[49] hms_0.4.2         processx_3.3.1    pkgload_1.0.2     colorspace_1.4-1 
[53] sessioninfo_1.1.1 rvest_0.3.3       memoise_1.1.0     beepr_1.3        
[57] haven_2.1.0

【问题讨论】:

  • 在此之前尝试library(odbc)。如果可行,我认为这可能是 odbc 或 DBI 包中的错误。
  • 仅供参考,odbc-1.1.6 已经快 2 年了,当前版本是 1.2.2。同样,DBI-1.1.0 是最新的。如果可以的话,更新这两个软件包可能会有所帮助。
  • 有任何进展或解决方案吗,BrianP?
  • 我有相同的然后将表名放在“”中然后它工作。你把你的 tblName 放在引号里了吗?
  • @r2evans 我认为更新 odbc 解决了这个问题。谢谢!

标签: r sql-server dbi


【解决方案1】:

最近我遇到了类似的问题。

问题描述:MS Server 数据库带有方案。任务是将 R data.frame 对象保存到预定义的数据库表中不删除它。

我遇到的问题:

  • 部分包功能不支持方案或需要github开发版安装
  • 只有在drop(删除表)操作后才能保存data.frame(我只需要“清除表”操作)

我是如何解决这个问题的

  • 使用简单的RODBC::sqlQuery,逐行写入data.frame。
  • 解决方案(几个功能)可用here 或here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    相关资源
    最近更新 更多