web-dev-qa-db-fra.com

Importer une image SQL dans la base de données PostgreSQL

Nous changeons d'hôtes et l'ancien fournissait un dump SQL de la base de données PostgreSQL de notre site.

Maintenant, j'essaye de le configurer sur un serveur WAMP local pour le tester.

Le seul problème est que je ne sais pas comment importer cette base de données dans PostgreSQL 9 que j'ai configurée.

J'ai essayé pgAdmin III mais je n'arrive pas à trouver une fonction "import". Donc, je viens d'ouvrir l'éditeur SQL et collé le contenu du dump là-bas et l'exécute, il crée les tables mais il continue à me donner des erreurs quand il essaie de mettre les données dedans.

ERROR:  syntax error at or near "t"
LINE 474: t 2011-05-24 16:45:01.768633 2011-05-24 16:45:01.768633 view...

The lines:
COPY tb_abilities (active, creation, modtime, id, lang, title, description) FROM stdin;
t   2011-05-24 16:45:01.768633  2011-05-24 16:45:01.768633  view    nl ...  

J'ai également essayé de faire cela avec la commande Invite mais je ne trouve pas la commande dont j'ai besoin.

Si je fais

psql mydatabase < C:/database/db-backup.sql;

Je reçois l'erreur

ERROR:  syntax error at or near "psql"
LINE 1: psql mydatabase < C:/database/db-backu...
        ^

Quel est le meilleur moyen d'importer la base de données?

389
dazz
psql databasename < data_base_dump

C'est la commande que vous recherchez.

Attention: databasename doit être créé avant l'importation. Jetez un oeil sur le Docs PostgreSQL ™ Chapitre 23. Sauvegarde et restauration .

635
Jacob

Voici la commande que vous recherchez.

psql -h hostname -d databasename -U username -f file.sql
317
Gabriel Ramirez

Je crois que vous voulez exécuter dans psql:

\i C:/database/db-backup.sql
100
Arran Ubels

Cela a fonctionné pour moi:

Sudo -u postgres psql db_name < 'file_path'
46
ivanacorovic

Je ne suis pas sûr que cela fonctionne dans la situation de l'OP, mais j'ai constaté qu'exécuter la commande suivante dans la console interactive était la solution la plus flexible pour moi:

\i 'path/to/file.sql'

Assurez-vous simplement que vous êtes déjà connecté à la bonne base de données. Cette commande exécute toutes les commandes SQL du fichier spécifié.

38
rockusbacchus

Fonctionne plutôt bien, en ligne de commande, tous les arguments sont requis, -W est pour mot de passe

psql -h localhost -U user -W -d database_name -f path/to/file.sql
35
Feuda

Juste pour les funsies, si votre dump est compressé, vous pouvez faire quelque chose comme:

gunzip -c filename.gz | psql dbname

Comme Jacob l'a mentionné, les docs PostgreSQL décrivent tout cela très bien.

21
alan

J'utilise:

cat /home/path/to/dump/file | psql -h localhost -U <user_name> -d <db_name>

J'espère que cela aidera quelqu'un.

5
Vajira Lasantha

Vous pouvez le faire dans pgadmin3. Supprimez le ou les schémas contenus dans votre vidage. Puis cliquez avec le bouton droit sur la base de données et choisissez Restaurer. Ensuite, vous pouvez rechercher le fichier de vidage.

3
Vanessa MacDougal

J'ai remarqué que beaucoup d'exemples sont trop compliqués pour localhost où il n'y a que de nombreux utilisateurs postgres sans mot de passe:

psql -d db_name -f dump.sql
2
Kiryl Plyashkevich