Я хочу сохранить большие объемы данных в SQL Server с помощью Rstudio. Знаете ли вы, как импортировать данные текстового файла в SQL Server, используя R studio? - PullRequest
0 голосов
/ 09 января 2019

У меня есть несколько вопросов:

  1. Я хочу сохранить все данные в SQL Server, используя R. Но я не смог импортировать большие объемы данных из-за некоторых проблем.

Существуют следующие проблемы:

Пример кода проблемы:

library(DatabaseConnector)
library(devtools)

connectionDetails <- createConnectionDetails(dbms="sql server", server="localhost", user="sa", password="xxxxxxxxxxx", schema="NHID_JK")
conn <- connect(connectionDetails)

NHID_GY20_T1_2003 <- read.table("C:/Users/BI/Documents/R/win-library/3.5/WORK_DATA/01.jk/NHID_GY20_T1_2003.TXT", header=TRUE, sep="|", na.strings = NULL, encoding="euc-kr", stringsAsFactors=FALSE, skip=0)

insertTable(connection = conn, tableName = "NHID_GY20_T1_2003", 
data=NHID_GY20_T1_2003, dropTableIfExists = TRUE, createTable=TRUE, 
tempTable=FALSE, useMppBulkLoad=FALSE)

disconnect(conn)

Пример ошибки после кодирования:

Ошибка в rJava ::. Jcall (batchedInsert, "V", "setString", i, as.character (column)):
java.lang.OutOfMemoryError: пространство кучи Java

Кроме того, я получаю это предупреждение:

В max (nchar (as.character (obj)), na.rm = TRUE): нет не пропущенных аргументов для max; возвращая -Inf

Желаемый результат: код должен сохранять все данные в таблицу SQL Server (например: dbo.NHID_GY20_T1_2003).

  1. Я хочу сохранить все данные (2002-2013 гг.) На SQL Server с использованием R. Вы знаете, как импортировать все данные при резке каждых 10000 единиц с использованием R?

Есть следующие проблемы:

Хотя он может сохранять почти данные, за исключением части данных целиком.

Пример кода проблемы:

 connectionDetails <- DatabaseConnector::createConnectionDetails(dbms="sql 
server", server="localhost", user="sa", password="xxxxxxxxxxxx", 
schema="NHID_JK")
dataFolder <- "C:/Users/BI/Documents/R/win-library/3.5/WORK_DATA/02.T120"
nrows <- 10000


conn <- DatabaseConnector::connect(connectionDetails)
#1 Identify files in the folders
fileLists<-list.files(dataFolder,full.names=FALSE)
for (file in fileLists){

#file<-fileLists[13]
con <- file(description=file.path(dataFolder,file),open="r")
tableName<-gsub(".[tT][xX][tT]","",file)
##Making the table with the tableName

data <- read.table(con, nrows=nrows, skip=0, 
                        header=TRUE, sep="|", na.strings = NULL, 
encoding="euc-kr", stringsAsFactors=FALSE)
colNames<-names(data)
#Insert table

DatabaseConnector::insertTable(connection = conn, tableName = tableName, 
data=data, dropTableIfExists = FALSE, createTable=TRUE, tempTable=FALSE, 
useMppBulkLoad=FALSE)  

repeat {
    if (nrow(data) ==0) break
    ## process chunck 'data'here, then..
    ## ..read next chunck
    if (nrow(data) != nrows) break

    data <- tryCatch({
        read.table(con, nrows=nrows, skip=0, 
                          header=TRUE, sep="|", na.strings = NULL, encoding="euc-kr", stringsAsFactors=FALSE)
    })
    names(data)<-colNames
    #Insert table
    tryCatch({
    DatabaseConnector::insertTable(connection = conn, tableName = tableName, data=data, dropTableIfExists = FALSE, createTable=FALSE, tempTable=FALSE, useMppBulkLoad=FALSE)  
    })
  }
}

close(con)

Пример ошибки после кодирования:

Ошибка в nchar (object, type = "chars"):
недопустимая многобайтовая строка, элемент 4

Кроме того, я получаю следующие предупреждающие сообщения:

1: в max (nchar (as.character (obj)), na.rm = TRUE): нет не пропущенных аргументов для max; возвращая -Inf

2: в max (nchar (as.character (obj)), na.rm = TRUE): нет не пропущенных аргументов для max; возвращая -Inf

Желаемый результат: код должен сохранять все данные в таблицу SQL Server (например: dbo.NHID_GY20_T1_2003).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...