Импортируйте файл дампа в PostgreSQL через RPostgreSQL

#r #postgresql #rpostgresql

Вопрос:

Мне интересно, есть ли способ импортировать дамп PostgreSQL через R (RPostgreSQL) в базу данных PostgreSQL.

Я понимаю, что именно так мы записываем csv или данные из R в PostgreSQL через RPostgreSQL.

 dbWriteTable(con, 'mtcars', mtcars)
 

Таким образом, мы можем импортировать дамп в базу данных PostgreSQL в терминале.

 i /Users/Downloads/mypostgres.dump
 

Есть ли способ импортировать дамп в PostgreSQL через пакет R, чтобы мне не нужно было покидать интерфейс R?

Ответ №1:

Вы могли бы воспользоваться system и позвонить psql :

 system('psql my_new_db  < /Users/Downloads/mypostgres.dump')
 

Комментарии:

1. Это system() дает мне подсказку о том, как запускать терминалы PostgreSQL в R, что решает для меня много проблем. Это pg_restore не работает для меня в этом случае, но я нашел system('psql my_new_db < /Users/Downloads/mypostgres.dump') . Если вы хотите отредактировать свой ответ, я с удовольствием отмечу это галочкой.

2. @Gnin, спасибо за ваш отзыв : редактирование завершено!

Ответ №2:

Вы можете попробовать:

 library("RPostgreSQL")

drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname = "postgres",
                 host = "localhost", port = 5432,
                 user = "openpg", password = "password")

dbWriteTable(con, "cartable", value = mtcars, append = TRUE, row.names = FALSE)

#Test if it is there
head(dbGetQuery(con, "SELECT * from cartable"))
#   mpg cyl disp  hp drat    wt  qsec vs am gear carb
#1 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#2 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#3 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#4 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#5 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
#6 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1