[使用dbAppendTable插入sql表中的行

问题描述 投票:1回答:1

我正在尝试将数据从r插入SQL Server表。我必须读取成百上千个csv格式的文件,我一次读取一个r,然后处理它们,然后将它们写入sql(只有一个表,这就是为什么我必须插入行的原因)

我正在使用DBI和odbc软件包。我正在使用dbCreateTable创建空表,并使用dbAppendTable插入数据。

空表中的列数与我要插入的数据相同

library(DBI)
library(odbc)

con <- dbConnect(odbc(), Driver = "SQL Server", Server = "myserver", 
                 Database = "mydb", trustedconnection = TRUE)

t <- read_csv("myfile.csv") %>% select(1,4:7,9:20 )
dbRemoveTable(con, "NEW_SQL_TABLE")
dbCreateTable(conn = con, "NEW_SQL_TABLE", t)
dbAppendTable(conn = con, "NEW_SQL_TABLE", t)

t2 <- dbReadTable(con,"NEW_SQL_TABLE")

我希望t2包含与t相同的记录,但t2的值为0

当我运行dbAppendTable时,控制台中没有一个我不确定的0。

> dbAppendTable(conn = con, "NEW_SQL_TABLE", t)
[1] 0
r dplyr dbi
1个回答
0
投票

只需使用此功能在表中插入行

 insert_row <- function(conn,table_name,col_data,data){
  dbSendUpdate(conn,paste0("INSERT INTO ",table_name," (",paste0(col_data,collapse=','),") VALUES ('",paste0(data,collapse="','"),"');"))
  print('data inserted')}
© www.soinside.com 2019 - 2024. All rights reserved.