Closed wahani closed 7 years ago
@mbadicke
devtools::install_github("inwt/dbtools", ref = "encodingArgument")
zum testen des feature.
Ich erhalte folgende Meldung:
> devtools::install_github("inwt/dbtools", ref = "encodingArgument")
Downloading GitHub repo inwt/dbtools@encodingArgument
from URL https://api.github.com/repos/inwt/dbtools/zipball/encodingArgument
Installing dbtools
Installing 1 package: data.table
Installing package into ‘S:/R/library/windows’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.3/data.table_1.10.4.zip'
Content type 'application/zip' length 1491022 bytes (1.4 MB)
downloaded 1.4 MB
package ‘data.table’ successfully unpacked and MD5 sums checked
Warning: cannot remove prior installation of package ‘data.table’
ERROR: dependency 'data.table' is not available for package 'dbtools'
* removing 'S:/R/library/windows/dbtools'
Error: Command failed (1)
data.table war von einem anderen Nutzer geladen und ist durch ein Update kaputt gegangen. Du kannst das Ticket auf mich assignen. Dann bringe ich das morgen in Ordnung.
So bereits geschehen. Ich kann das Paket unter Windows und Linux problemlos installieren.
@wahani Ich habe immer noch kein Glück. Wirst du aus der unteren Fehlermeldung schlau?
** testing if installed package can be loaded
Warnung in get(".requireCachedGenerics", where)
internal error -3 in R_decompress1
Error in get(".requireCachedGenerics", where) :
lazy-load database 'U:/MariaDB_Monitor/lib/dbtools/R/dbtools.rdb' is corrupt
Fehler: Laden fehlgeschlagen
Ausführung angehalten
ERROR: loading failed
* removing 'U:/MariaDB_Monitor/lib/dbtools'
Error: Command failed (1)
Das ist ein Fehler, der beim installieren von Paketen auftreten kann. Normalerweise lässt sich das Problem durch eine Neuinstallation beheben. Arbeitest du unter Windows?
Ich habe dir einmal die Windows-Version hochgeladen. Du könntest es nochmal damit versuchen.
Danke! Das hat funktioniert. Ja. Gerade arbeite ich mit Windows.
@wahani Wir setzen in der sendData
das Encoding ebenfalls hart:
sqlLoadData <- function(path, table, mode) {
SingleQuery (
paste0 (
"LOAD DATA LOCAL INFILE '",
path,
"' ",
if (mode == "replace")
"REPLACE ",
"INTO TABLE `",
table,
"` ",
"CHARACTER SET UTF8 ",
"FIELDS TERMINATED BY ',' ",
"OPTIONALLY ENCLOSED BY '\"' ",
"LINES TERMINATED BY '\n' ",
"IGNORE 1 LINES;"
)
)
}
Das bezieht sich aber auf die Daten die eingelesen werden, oder? Das heißt wir sollten eventuell darauf achten, dass die csv tatsächlich als utf8 abgelegt wird?
Nein, ich glaube, das ist unkritisch. Aber wenn wir das Encoding flexibel gestalten wollen, dann sollten wir das doch sowohl auf der Lese- als auch auf der Schreib-Seite erlauben, oder?
Das bezieht sich auf die CSV-Datei. Wichtig ist an dieser Stelle daher nur, dass die CSV-Datei tatsächlich UTF-8-Encoding hat. Das Encoding, in dem die Daten später in der Tabelle landen, wird wiederum durch die Einstellungen der Tabelle (CREATE-Statement der Tabelle bzw. implizit über das Default der Datenbank oder des Servers, wenn nicht angegeben wurde) bestimmt.
Aha. Dann hat @wahani in https://github.com/INWT/dbtools/issues/19#issuecomment-280312344 wohl doch Recht. Das betrifft dann ja die sendData. Ich prüfe das im Rahmen von #24 gleich mal mit.
fwrite kennt (noch) kein enc-Argument
@wahani Das Feature sendQuery(..., encoding = NULL)
funktioniert. Danke!
In PR #23 bearbeitet
Derzeit wird mit
das Encoding gesetzt. Wir sollten in der
sendQuery
ein entsprechendes Argument einbauen, um die Verwendung optional zu halten.