Neste primeiro tutorial, iremos mostrar como criar tabelas no PostgreSQL e com várias opções, porém, sem esgotar todas as possibilidades, vez que são muitas. Primeiramente usando o psql, posteriormente a partir do próprio R.
Neste primeiro tutorial, iremos mostrar como criar tabelas no PostgreSQL e com várias opções, porém, sem esgotar todas as possibilidades, vez que são muitas. Primeiramente usando o psql, posteriormente a partir do próprio R.
Para a acessar o PostgreSQL com o psql, você deve usar o seguinte comando:
O comando sudo
, seguido da opção -u
informa o sistema que outro usuário irá executar o comando psql
, ou seja, o usuário postgres
.
O usuário postgres
é ao mesmo tempo um super usuário do PostgreSQL como também do sistema operacional. A menos que você especifique diferentemente no initdb, ele é criado quando você instala o PostgreSQL. Além disso, ao instalar o PostgreSQL, é criada uma base de dados chamada postgres
com as configurações de local e do template1
existente. Falaremos sobre os detalhes dessas configurações no tutorial sobre base de dados. Por ora, é importante saber que, por meio do comando acima, estamos conectados à base de dados postgres
.
Opcionalmente, você pode conectar-se diretamente à uma outra base existente. Para tanto, basta colocar o nome da base de dados ao final do comando:
A forma mais simples de criar uma tabela no PostgreSQL é por meio do comando create table
. Vamos criar uma tabela chamada t1
, com duas colunas, uma do tipo texto, outra do tipo inteiro. Lembre que o psql exige que você termine o comando com um ponto e vírgula. Do contrário, ele espera que você seguirá escrevendo.
Caso cometa algum erro na hora de escrever o comando ou queira desistir de rodá-lo, basta dar ctrl + c
para voltar ao prompt do psql.
Note que após indicar o nome da tabela, eu abro parênteses para declarar as colunas e seus respectivos tipos.
Opcionalmente, você pode indicar que essa tabela é temporária. Assim, ao sair do psql, ela desaparecerá:
Para inserir valor na tabela, usamos o comando INSERT INTO
, seguido do nome da tabela, do comando VALUES
e, por fim, de parênteses com os valores separados por vírgula.
No exemplo acima, nós inserimos uma linha sem mencionar os nomes das colunas, pois elas elas estão subentendidas pela ordem das inserções. Porém, é recomendável explicitá-las, para evitar inserções incorretas
Até porque, assim, você pode mencionar as colunas na ordem em que preferir:
Se você quiser inserir várias linhas, basta separar os parênteses com os valores por vírgula:
Vamos imprimir a tabela:
col1 | col2
----------------+------
primeira linha | 2
segunda linha | 5
terceira linha | 7
quarta linha | 35
quinta linha | 6
(5 rows)
Dito isso, há a opção de criar a tabela e inserir os valores numa única etapa:
Note que eu não declarei os tipos de colunas. Caso queira declará-los, você deve fazê-lo nos valores e não nos nomes das colunas:
Para remover as tabelas, basta usar o comando drop
:
Assumindo que você já sabe se conectar ao PostgreSQL a partir do R, vamos usar o pacote DBI
, que chamará o RPostgres
para criar tabelas e inserir valores.
Para criar a tabela e inserir valores de uma única vez, use a função dbWriteTable
.
library(DBI)
con <- dbConnect(RPostgres::Postgres(), host, dbname,user,password)
dbWriteTable(con,"mtcars", mtcars)
Para apenas criar a tabela com as colunas vazias, use a função dbCreateTable
:
Agora você pode inserir os valores:
Particularmente, eu acho essa segunda opção mais segura. Para inserir valores, eu prefiro usar a função dbxInsert()
do pacote dbx
. Ele é especialmente útil para inserir grandes volumes em parcelas, além de ser bem mais rápido que o dbAppendTable()
. Por exemplo, se você tiver um dataframe com milhoes de linhas, você pode inseri-las a cada 100 mil:
Se você quiser ler a tabela, use a função dbReadTable
:
Se você quiser remover a tabela, use a função dbRemoveTable
.
Ao final, não se esqueça de se desconectar: