현재 PostgreSQL 테이블에 데이터를 삽입하려면 빈 테이블을 만들고 insert into table values ...
과 함께 모든 값을 가진 단일 문자열을 데이터 스테이지와 함께 축소해야합니다. 대형 데이터 프레임에서는 작동하지 않습니다. 전에 물어 비슷한 질문에 대답 제안 나는 다음과 같은 해킹을 시도R에서 PostgreSQL에 테이블을 쓰는 방법?
Error in postgresqlpqExec(new.con, sql4) : RS-DBI driver: (could not Retrieve the result : ERROR: syntax error at or near "STDIN" LINE 1: COPY "table_1" FROM STDIN
dbWtriteTable()
는 PostgreSQL을 위해 일 다음과 같은 오류를 제공하지 않습니다
.... 여기에 링크가 있습니다 ... How do I write data from R to PostgreSQL tables with an autoincrementing primary key?
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")
이 핵은 여전히 저에게 적합하지 않습니다. postgresqlWriteTable()
은 똑같은 오류를 던졌습니다 ... 정확히 여기서 문제가 있습니까?
대안으로 나는 caroline
패키지의 dbWriteTable2()
을 사용해 보았습니다. 그리고 직접 PostgreSQL의에서 테이블에 큰 dataframe를 작성하는 다른 방법은 거기에 다른 오류 ...
Error in postgresqlExecStatement(conn, statement, ...) :
RS-DBI driver: (could not Retrieve the result : ERROR: column "id" does not exist in table_1
)
creating NAs/NULLs for for fields of table that are missing in your df
Error in postgresqlExecStatement(conn, statement, ...) :
RS-DBI driver: (could not Retrieve the result : ERROR: column "id" does not exist in table_1
)
던져?
얼마나 큰 이야기입니까? 방금 RPostgresQL :: dbWriteTable()을 사용하여 PostgreSQL 테이블에 R에서 ~ 800MB 10,000x1000 data.frame을 성공적으로 썼습니다. 그것은 (내가 생각하는 한 시간에 접근하는) 시간이 좀 걸렸지 만 효과가있었습니다. – bgoldst
@bgoldst 큰 데이터의 경우'insert into '메소드가 실패했다. 작은 데이터 (1X1 df) 일지라도'dbWriteTable()'이 실패하고 명시된대로 오류를 준다. – Gaurav