hrbrmstr की टिप्पणी में सूत्र से, मुझे यह काम करने के लिए एक हैक मिला।
postgresqlWriteTable
. में RPostgreSQL
. में पैकेज, आपको लाइन को बदलने की जरूरत है
sql4 <- paste("COPY", postgresqlTableRef(name), "FROM STDIN")
के साथ
sql4 <- paste(
"COPY ",
postgresqlTableRef(name),
"(",
paste(postgresqlQuoteId(names(value)), collapse = ","),
") FROM STDIN"
)
ध्यान दें कि केस-संवेदी कॉलम नामों को पास करने के लिए चरों का उद्धरण (मूल हैक में शामिल नहीं) आवश्यक है।
ऐसा करने के लिए यहां एक स्क्रिप्ट है:
body_lines <- deparse(body(RPostgreSQL::postgresqlWriteTable))
new_body_lines <- sub(
'postgresqlTableRef(name), "FROM STDIN")',
'postgresqlTableRef(name), "(", paste(shQuote(names(value)), collapse = ","), ") FROM STDIN")',
body_lines,
fixed = TRUE
)
fn <- RPostgreSQL::postgresqlWriteTable
body(fn) <- parse(text = new_body_lines)
while("RPostgreSQL" %in% search()) detach("package:RPostgreSQL")
assignInNamespace("postgresqlWriteTable", fn, "RPostgreSQL")