Большой набор данных, импортированный из базы данных MS Access, данные затем подмножества по дате и экспортируются в базу данных SQL.
Экспорт с помощью команды sqlsave работает очень хорошо, однако из-за размера набора данных (более 500 000 строк с 73 переменными) он не подходит.
При попытке записи данных с использованием odbc генерируетсяследующая ошибка: ошибка в nchar (as.character (x)): недопустимая многобайтовая строка, элемент 62220
При использовании Google и просмотре Stackoverflow я видел, что эта ошибка обычно относится к нестандартным символам в данных.
Я использовал dplyr для удаления всех нестандартных символов перед тем, как попытаться записать таблицу в SQL, та же ошибка.
Затем я экспортировал файл в csv с использованием кодировки UTF-8 и вернул его обратно.при использовании кодировки UTF-8 перед попыткой записи таблицы в SQL, та же ошибка.
Наконец, я попробовал метод указания максимальной длины столбца и структуры каждого столбца в формате varchar (255), float или date,Та же ошибка.
library(odbc)
library(RODBC)
library(DBI)
library(data.table)
setwd("E:/BUS_INSIGHTS/David r scripts/PUNE_Claims")
odbcCEDBS0233 <- dbConnect(odbc::odbc(), dsn = "CEDBS0233")
CEDBS0233 = odbcConnect("CEDBS0233")
PUNE <- dbConnect(drv = odbc::odbc(), .connection_string = "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=E:/Motor/Data/ZC Combined/2018/1812/ZC Combined Pune.accdb")
PUNE <- subset(PUNE, DATE_OF_LOSS > as.Date("2009-01-01"))
require(dplyr)
clean <- PUNE %>%
mutate_all(funs(gsub("[[:punct:]]", "", .)))
DBI::dbWriteTable(con = odbcCEDBS0233,
name = SQL('PUNE_Claims'),
value = clean,
overwrite=TRUE,)
Я пробовал различные другие методы, такие как запись csv напрямую в SQL (к сожалению, наш сервер SQL не допустит этого).Используя Regex, и другие вещи, которые я сейчас забыл.
Я полностью ударился о кирпичную стену, я понятия не имею, почему sqlsave с радостью выгружает данные, а odbc отказывается.
Я не могуузнайте, как найти элемент 62220, чтобы увидеть, что не так, но с помощью dplyr, удаляющего все плохие символы, проблем быть не должно.
Я в ваших руках, любая помощь будет принята с благодарностью.