Como gerar um banco no PostgreSql usando um arquivo .SQL ?
12/05/2017
0
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
Curtir tópico
+ 0
Responder
Post mais votado
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
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
Luiz Santos
Responder
Mais Posts
07/10/2020
Isaque Neves
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
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
Responder
Clique aqui para fazer login e interagir na Comunidade :)