Экспорт таблицы из R в SQL Server - PullRequest
1 голос
/ 06 июля 2019

Мне удалось собрать данные из https://www.gov.mb.ca/sd/fire/Fire-Situation/daily-firesituation.html в R. И я хотел бы экспортировать их сейчас в SQL.

library('rvest')
url_Manitoba <- 'https://www.gov.mb.ca/sd/fire/Fire-Situation/daily- 
firesituation.html'
webpage_Manitoba <- read_html(url_Manitoba)

population <- webpage_Manitoba %>%
html_nodes("table") %>%
html_table(fill=TRUE)
population[[2]]

Однако я считаю, что таблица в R должна иметь некоторые изменения для экспорта в SQL.Как брать только некоторые данные.выделите желтым цветом то, что мне нужно, в таблице SQL enter image description here

и иметь его в форме, подобной enter image description here

Ответы [ 2 ]

0 голосов
/ 09 июля 2019
library("odbc")
library("DBI")

# Connect to SQL Server
con = dbConnect(odbc(),.connection_string = "Driver={SQL Server};Server=ipaddress;Uid=user;Pwd=password;")

# Write the table,is it doesn't exist it will be created
dbWriteTable(con, sql_table_name, polulation, append = TRUE, row.names = F)
0 голосов
/ 06 июля 2019

Путем записи данных в CSV локально, а затем с помощью BULK INSERT (недоступно в виде встроенной функции, похожей на sqlSave), данные можно записать на MS SQL Server очень быстро.

toSQL = data.frame(...);
write.table(toSQL,"C:\\export\\filename.txt",quote=FALSE,sep=",",row.names=FALSE,col.names=FALSE,append=FALSE);
    sqlQuery(channel,"BULK
                INSERT Yada.dbo.yada
                FROM '\\\\<server-that-SQL-server-can-see>\\export\\filename.txt'
                WITH
                (
                FIELDTERMINATOR = ',',
                ROWTERMINATOR = '\\n'
                )");

Или. , .

Поскольку вставка INTO ограничена 1000 строками, вы можете использовать dbBulkCopy из пакета rsqlserver.

dbBulkCopy - это расширение DBI, которое связывает популярную утилиту командной строки Microsoft SQL Server с именем bcp для быстрого массового копирования больших файлов в таблицу. Например:

url = "Server=localhost;Database=TEST_RSQLSERVER;Trusted_Connection=True;"
conn <- dbConnect('SqlServer',url=url)
## I assume the table already exist
dbBulkCopy(conn,name='T_BULKCOPY',value=df,overwrite=TRUE)
dbDisconnect(conn)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...