728 votes

Exécutez un fichier postgresql .sql à l'aide des arguments de la ligne de commande

J'ai quelques .les fichiers sql avec des milliers d'instructions INSERT en et besoin pour exécuter ces plaquettes sur ma base de données PostgreSQL afin de les ajouter à une table. Les fichiers sont que de vastes qu'il est impossible de les ouvrir et copier les instructions d'INSERTION dans une fenêtre de l'éditeur et de les exécuter. J'ai trouvé sur le net que vous pouvez utiliser les éléments suivants, en allant dans le dossier bin de votre postgresql installer:

psql -d myDataBase -a -f myInsertFile

Dans mon cas

psql -d HIGHWAYS -a -f CLUSTER_1000M.sql

Je suis alors demandé un mot de passe pour mon utilisateur, mais je ne peux pas entrer n'importe quoi et quand j'appuie sur entrée, j'obtiens cette erreur:

psql: FATAL: password authentication failed for user "myUsername"

Pourquoi ne veut-il pas me laisser entrer un mot de passe. Est-il un chemin de ronde, ce que critique que je puisse exécuter ces scripts.

EDIT:

J'ai eu autour de ce problème par l'ajout d'une nouvelle entrée dans mon pg_hba.fichier conf avec la structure suivante:

# IPv6 local connections:
host    myDbName    myUserName ::1/128  trust

Le pg_hba.fichier conf peuvent généralement être trouvés dans les "données" de votre dossier Postgresql installer.

691voto

pmverma Points 541

Bien sûr, vous obtiendrez une erreur fatale lors de l'authentification, car vous n'incluez pas le nom d'utilisateur.

essayez celui-ci, ça me va :)

 psql -U username -d myDataBase -a -f myInsertFile
 

427voto

Rachid O. Points 868

vous devriez faire comme ceci:

 \i path_to_sql_file
 

voir:

entrer la description de l'image ici

192voto

a_horse_with_no_name Points 100769

Vous disposez de trois options pour la fourniture d'un mot de passe:

  1. définir la PGPASSWORD variable d'environnement. Pour les détails, voir le manuel de: http://www.postgresql.org/docs/current/static/libpq-envars.html
  2. utiliser un .pgpass fichier pour stocker le mot de passe. Pour les détails, voir le manuel de: http://www.postgresql.org/docs/current/static/libpq-pgpass.html
  3. utilisation "authentification de confiance" pour l'utilisateur: http://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-TRUST

30voto

Satish Sharma Points 1117

Via le Terminal, connectez-vous à votre base de données et essayez ceci:

 database-# >@pathof_mysqlfile.sql
or
database-#>-i pathof_mysqlfile.sql
or
database-#>-c pathof_mysqlfile.sql
 

11voto

Eric Leschinski Points 14289

Promenade à travers sur la façon d'exécuter une instruction SQL sur la ligne de commande pour postgresql sous Linux:

Ouvrez un terminal et assurez-vous que vous pouvez exécuter l' psql commande:

psql --version
which psql

Le mien est la version 9.1.6 situé en /bin/psql.

Créer un simple fichier texte appelé mysqlfile.sql

Modifier ce fichier, mettre une seule ligne là:

select * from mytable;

Exécutez cette commande sur la ligne de commande (en remplaçant votre nom d'utilisateur et le nom de votre base de données pour pgadmin et kurz_prod):

psql -U pgadmin -d kurz_prod -a -f mysqlfile.sql

Le résultat est le suivant je reçois sur le terminal (je ne suis pas invité à entrer un mot de passe):

select * from mytable;

test1
--------
hi
me too

(2 rows)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X