Eu tenho alguns arquivos .sql com milhares de instruções INSERT e preciso executar essas inserções no meu banco de dados PostgreSQL para adicioná-las a uma tabela. Os arquivos são tão grandes que é impossível abri-los e copiar as instruções INSERT em uma janela do editor e executá-las lá. Eu descobri na Internet que você pode usar o seguinte navegando para a pasta bin da sua instalação do PostgreSQL:
psql -d myDataBase -a -f myInsertFile
No meu caso:
psql -d HIGHWAYS -a -f CLUSTER_1000M.sql
Sou solicitada uma senha para o meu usuário, mas não consigo inserir nada e, quando clico em enter, recebo este erro:
psql: FATAL: falha na autenticação da senha para o usuário "myUsername"
Por que não me permite digitar uma senha? Existe uma maneira de contornar isso, pois é fundamental que eu possa executar esses scripts?
Eu resolvi esse problema adicionando uma nova entrada no meu arquivo pg_hba.conf com a seguinte estrutura:
# IPv6 local connections:
host myDbName myUserName ::1/128 trust
O arquivo pg_hba.conf geralmente pode ser encontrado na pasta 'data' da sua instalação do PostgreSQL.
fonte
Respostas:
Você tem quatro opções para fornecer uma senha:
http://www.postgresql.org/docs/current/static/libpq-envars.html
http://www.postgresql.org/docs/current/static/libpq-pgpass.html
https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING
fonte
-u
parâmetro conforme documentado no manualObviamente, você receberá um erro fatal ao se autenticar, porque você não inclui um nome de usuário ...
Experimente este, está tudo bem para mim :)
Se o banco de dados for remoto, use o mesmo comando com o host
fonte
-a
param?-a
não é necessário aqui. É "Imprima todas as linhas de entrada não vazias na saída padrão à medida que são lidas"Você deve fazer assim:
Vejo:
fonte
Permission denied
chmod 777 myfile
erroPermission denied
foi corrigidoUse isso para executar arquivos * .sql quando o servidor PostgreSQL estiver localizado em um local diferente:
Em seguida, você será solicitado a inserir a senha do usuário.
EDIT: atualizado com base no comentário fornecido por @zwacky
fonte
-a
: all echo,-q
: calmo,-f
: arquivofonte
Se você está logado no psql no shell do Linux, o comando é:
por um caminho absoluto e
para o caminho relativo de onde você chamou psql.
fonte
Através do terminal, faça logon no seu banco de dados e tente o seguinte:
ou
ou
fonte
Você pode fornecer o nome de usuário e o PASSSWORD na própria linha de comandos.
fonte
você pode até fazê-lo desta maneira:
Se você tem
sudo
acesso à máquina e não é recomendado para scripts de produção apenas para teste em sua própria máquina, é a maneira mais fácil.fonte
Veja como executar um SQL na linha de comando do PostgreSQL no Linux:
Abra um terminal e verifique se você pode executar o
psql
comando:O meu é a versão 9.1.6, localizada em
/bin/psql
.Crie um arquivo de texto simples chamado
mysqlfile.sql
Edite esse arquivo, coloque uma única linha:
Execute este comando na linha de comando (substituindo pgadmin e kurz_prod) por seu nome de usuário e nome do seu banco de dados:
A seguir, o resultado que recebo no terminal (não é solicitada uma senha):
fonte
Você pode abrir um prompt de comando e executar como administrador. Então digite
Password for user postgres:
vai aparecer.Digite sua senha e digite. Não consegui ver a senha do que estava digitando, mas desta vez, quando pressiono enter, funcionou. Na verdade, eu estava carregando dados no banco de dados.
fonte
-d "postgres"
-d
para o nome do banco de dados, verificarpsql --help
Eu consegui que escrevi (localizado no diretório em que meu script está)
onde
-u user
é a função que possui o banco de dados em que eu quero executar o script e, em seguida, ele sepsql
conecta aopsql
console, depois que-d my_database
me carregamydatabase
finalmente-a -f file.sql
onde-a
ecoam todas as entradas do script e-f
executam comandos defile.sql
dentro emydatabase
, em seguida, saem.Estou usando: psql (PostgreSQL) 10.12 no (Ubuntu 10.12-0ubuntu0.18.04.1)
fonte