sql >> データベース >  >> RDS >> PostgreSQL

自動インクリメントの主キーを使用して、RからPostgreSQLテーブルにデータを書き込むにはどうすればよいですか?

    hrbrmstrのコメントのスレッドから、これを機能させるためのハックを見つけました。

    postgresqlWriteTableRPostgreSQLで パッケージ、ラインを交換する必要があります

    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")
    


    1. 型変換。 CのlibpqのPostgreSQLOID値をどうすればよいですか?

    2. Django Migrations:入門書

    3. 結果セットをSQL配列から文字列の配列に変換します

    4. MySQLクエリでのUNION操作とLIMIT操作の組み合わせ