Como gerar um banco no PostgreSql usando um arquivo .SQL ?

PostgreSQL

12/05/2017

Bom dia , tenho um cript .SQL gerado de um banco de um cliente e gostaria de importa-ló para o meu postgres como faço essa importação através desse arquivo ?
Rodrigo Oliveira

Rodrigo Oliveira

Curtidas 0

Melhor post

Luiz Santos

Luiz Santos

12/05/2017

Você vai usar o comando psql.

Vai ficar mais ou menos assim:

psq arquivo.sql database_de_destino

Caso o servidor não seja a sua máquina local, você precisa passar informações de conexão

psql -h hostname -p porta -U usuario -f arquivo.sql database_de_destino

Fonte

https://www.postgresql.org/message-id/E850FBD66355494C9DEB0E62363EB68F016572A4@dtvemail.datavantage.com

Grande abs
GOSTEI 1

Mais Respostas

Isaque Neves

Isaque Neves

12/05/2017

estou com uma dificuldade para fazer Consulta recursiva no PostgreSQL para criar uma árvore de menu, não sei se posso postar aqui


Como criar um json de uma estrutura hierárquica em SQL com PostgreSQL 12?
Preciso criar um menu como a imagem abaixo, esse menu já está funcionando, mas a solução que estou utilizando não é muito otimizada e tem uma grande sobrecarga porque estou fazendo muitos acessos ao banco de dados em código PHP com foreach e recursão.
Eu gostaria de uma solução para acessar o banco de dados apenas uma vez e preparar a árvore JSON.

Fiz um código SQL que não está funcionando muito bem porque não está mesclando itens de menu do mesmo pai
[![enter image description here][1]][1]



Minha implementação de teste atual em SQL que esta falhando, pois esta repetindo "Jubarte", não esta mesclando os itens da "Jubarte"

```sql
CREATE TABLE menus
(
id bigserial NOT NULL PRIMARY KEY,
customer_id integer NOT NULL,
"idPai" bigint,
label text,
rota text
);

INSERT INTO menus(customer_id, "idPai", label, rota) VALUES
(1,NULL,'Jubarte', ''),
(2,1,'Cadastros', ''),
(3,NULL,'Ciente', ''),
(4,1,'Autorizações', ''),
(5,4,'Menus', ''),
(6,2,'Organograma', ''),
(7,1,'Minha Conta', '');

WITH RECURSIVE menus_tree("id", "customer_id", "idPai", "label", "rota", "children") AS (
-- tree leaves (no matching children)
(SELECT c.*, json '[]'
FROM menus c
WHERE NOT EXISTS(SELECT * FROM menus AS hypothetic_child WHERE hypothetic_child."idPai" = c.id)
)
UNION ALL
-- pozs's awesome "little hack"
SELECT (parent).*, json_agg(child) AS "children"
FROM (
SELECT parent, child
FROM menus_tree AS child
JOIN menus parent ON parent.id = child."idPai"
) branch
GROUP BY branch.parent
)
SELECT jsonb_pretty(json_agg(t)::jsonb)
FROM menus_tree t
LEFT JOIN menus AS hypothetic_parent ON(hypothetic_parent.id = t."idPai")
WHERE hypothetic_parent.id IS NULL;

```

Result:

```json

[
{
"id": 3,
"rota": "",
"idPai": null,
"label": "Ciente",
"children": [
],
"customer_id": 3
},
{
"id": 1,
"rota": "",
"idPai": null,
"label": "Jubarte",
"children": [
{
"id": 7,
"rota": "",
"idPai": 1,
"label": "Minha Conta",
"children": [
],
"customer_id": 7
}
],
"customer_id": 1
},
{
"id": 1,
"rota": "",
"idPai": null,
"label": "Jubarte",
"children": [
{
"id": 2,
"rota": "",
"idPai": 1,
"label": "Cadastros",
"children": [
{
"id": 6,
"rota": "",
"idPai": 2,
"label": "Organograma",
"children": [
],
"customer_id": 6
}
],
"customer_id": 2
},
{
"id": 4,
"rota": "",
"idPai": 1,
"label": "Autorizações",
"children": [
{
"id": 5,
"rota": "",
"idPai": 4,
"label": "Menus",
"children": [
],
"customer_id": 5
}
],
"customer_id": 4
}
],
"customer_id": 1
}
]
```

https://stackoverflow.com/questions/64254118/recursive-query-in-postgresql-to-create-a-menu-tree
[1]: https://i.stack.imgur.com/OZrot.png
GOSTEI 0
POSTAR