【问题标题】:Export data frame to SQL server using RODBC package使用 RODBC 包将数据框导出到 SQL Server
【发布时间】:2014-02-13 16:00:29
【问题描述】:

我在 R 中使用 RODBC 包从 SQL Server 数据库导入/导出数据帧。虽然导入没有问题。我不知道如何将数据框的内容导出到现有的 SQL 表中。

我正在尝试使用包中提供的sqlQuery() 函数,但我不确定如何在表中插入多条记录。

有关如何插入行的示例会有所帮助 我已确保我的表格和数据框的列是相同的。

【问题讨论】:

    标签: sql sql-server r rodbc


    【解决方案1】:

    这是我使用sqlSave() 的代码。我正在使用 SQL Server 2008。Conn 是我使用 odbcConnect() 创建的连接:

    #creating data to be saved in SQL Table
    data_to_save<-cbind(scenario_1,scenario_2,scenario_3,scenario_4,store_num,future_date,Province,index)
    
    #use sqlSave() rather than sqlQuery() for saving data into SQL Server
    sqlSave(conn,data.frame(data_to_save),"CC_Forecast",safer=FALSE,append=TRUE)
    

    【讨论】:

    • 谢谢严。我知道这个函数,但是在相当大的数据框的情况下它会抛出错误。 sqlQuery() 是一个更通用的函数,它逐行插入数据框,如果您的数据框列是表的子集,sqlSave() 也不起作用
    【解决方案2】:
    dbWriteTable(conn, "RESULTS", results2000, append = T)
    

    使用 DBI 包

    【讨论】:

      【解决方案3】:

      我想补充一下严的回答。

      在使用 sqlSave() 函数之前,请确保将默认数据库更改为表所在的正确数据库。特别是如果您想写入现有表!

      See here: 了解如何设置 ODBC 连接以及如何更改默认数据库。

      之后,您可以使用这些将数据转储到 sql:

      specificDB= odbcConnect(dsn ='name you set up in ODBC',uid = '***', pwd = '****')
      
      sqlSave(specificDB, output_to_sql, tablename = 'a_table_in_specificDB', rownames = F,append = T)
      
      close(specificDB)
      

      速度很慢。耐心点。

      【讨论】:

        【解决方案4】:

        sqlSave 与附加属性一起使用。请参阅下面的代码:

         sqlSave(uploaddbconnection, outputframe, tablename =
            "your_TableName",rownames=FALSE, append = TRUE)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多