2017-07-04 5 views
2

Ich richte eine SQL Azure-Datenbank. Ich muss täglich Daten in die Datenbank schreiben. Ich verwende 64-Bit-R-Version 3.3.3 unter Windows10. Einige der Spalten enthalten Text (mehr als 4000 Zeichen). Zunächst habe ich einige Daten aus einem CSV in die SQL Azure-Datenbank mit Microsoft SQL Server Management Studios importiert. Ich habe die Textspalten als ntext-Format eingerichtet, denn als ich versucht habe, nvarchar zu verwenden, war die max 4000 und einige der Werte wurden gekürzt, obwohl sie etwa 1100 Zeichen lang waren.RODBC ERROR: 'Calloc' konnte Speicher nicht reservieren

Um in die Datenbank anhängen ich zuerst die Datensätze in einer temporären Tabelle speichere, wenn ich die varTypes vordefinierten:

varTypesNewFile <- c("Numeric", rep("NTEXT", ncol(newFileToAppend) - 1)) 
names(varTypesNewFile) <- names(newFileToAppend) 
sqlSave(dbhandle, newFileToAppend, "newFileToAppendTmp", rownames = F, varTypes = varTypesNewFile, safer = F) 

und fügen Sie sie dann unter Verwendung:

insert into mainTable select * from newFileToAppendTmp 

Wenn der Text ist nicht zu lang, das obige funktioniert. Aber manchmal bekomme ich folgende Fehler während des sqlSave Befehl:

Error in odbcUpdate(channel, query, mydata, coldata[m, ], test = test, : 
'Calloc' could not allocate memory (1073741824 of 1 bytes) 

Meine Fragen sind:

  1. Wie kann ich dieses Problem begegnen?

  2. Ist das das Format, das ich verwenden sollte?

  3. Darüber hinaus dauert es etwa eine Stunde, um etwa 5k Datensätze hochzuladen, auch wenn das oben genannte funktioniert. Ist es nicht zu lang? Ist das die normale Zeit, die es dauern sollte? Wenn nicht, was könnte ich besser machen?

Antwort

1

RODBC ist sehr alt, und kann ein bisschen flockig mit NVARCHAR Spalten sein. Verwenden Sie stattdessen das Paket RSQLServer, das eine alternative Möglichkeit zum Herstellen einer Verbindung mit SQL Server bietet (und auch ein dplyr-Back-End bereitstellt).

+0

Da die CRAN-Version nicht vorhanden ist, habe ich versucht: devtools :: install_github ('imanuelcostigan/RSQLServer') Dies gibt: "ERROR: Abhängigkeits 'dbplyr' für Paket nicht verfügbar ist 'RSQLServer'" Dann: devtools :: install_github ('tidyverse/dbplyr') ergibt: "FEHLER: Abhängigkeit 'kleben' ist nicht verfügbar für Paket 'dbplyr'" Und dann: "ACHTUNG: Rtools ist erforderlich, um R-Pakete zu bauen, ist aber nicht installiert." Rtools jetzt installieren. – deann

+0

RSQLServer ist auf CRAN. Versuchen Sie es erneut mit install.packages. –

+0

> install.packages ("RSQLServer") Paket Installation in 'C: /Users/ds/Documents/R/win-library/3.3' (als 'lib' nicht spezifiziert ist) Warnung in install.packages: Paket "RSQLServer" ist nicht verfügbar (für R Version 3.3.3) – deann

Verwandte Themen