GNU/Linux >> Tutoriels Linux >  >> Linux

Impossible de pg_restore le fichier SQL sur la machine virtuelle Linux distante

'pg_restore' est destiné à restaurer les fichiers générés par 'pg_dump'.

À partir de la page de manuel

pg_restore est un utilitaire permettant de restaurer une base de données PostgreSQL à partir d'une archive créée par pg_dump(1) dans l'un des formats de texte non brut.

https://www.postgresql.org/docs/9.2/static/app-pgrestore.html

Si votre fichier a été généré par pg_dump, vous devez probablement au moins lui indiquer dans quelle base de données il doit être vidé :

pg_restore -d my_new_database temp.sql

Ma propre expérience avec pg_restore à travers différentes versions montre que j'ai souvent besoin de spécifier le format du fichier de vidage, même s'il était au format "natif", malgré la page de manuel indiquant qu'il détecterait le format.

pg_restore -d my_new_database -Fc temp.dump

Ce n'est qu'une supposition, mais je pense que si les tables sont effectivement restaurées, sans spécifier la base de données, elles ont été déversées dans la base de données par défaut. Vous pouvez vérifier cela en listant les tables dans la base de données 'postgres' (il ne devrait y en avoir aucune).

postgres=#\c postgres
You are now connected to database "postgres" as user "postgres".
postgres=#\dt
No relations found.

Si vos tables ont été restaurées dans la base de données par défaut, elles seront répertoriées.

Les fichiers SQL en texte brut doivent être traités différemment, généralement exécutés via des commandes SQL à l'aide de psql.

psql -d my_database < temp.sql

En supposant que vous ayez généré votre sauvegarde de base de données comme ceci :

pg_dump -a --inserts databasename > exportfilename.sql

Essayez de restaurer votre fichier comme ceci :

psql databasename -f exportfilename.sql

Postgres pg_restore comme mentionné ci-dessus est uniquement destiné à être utilisé avec dump fichiers, vous ne pouvez pas le restaurer comme ça. Vérifiez cette réponse sur le site officiel postgres.org

En gros, vous ne faites pas utilisez pg_restore avec sql fichiers --->https://www.postgresql.org/message-id/AANLkTi%3DAqmWrUR4f8%2BEfCHzP%2BQrL1%3DunRLZp_jX7SoqF%40mail.gmail.com


Linux
  1. Comment déplacer un fichier sous Linux

  2. Linux - Tout est un fichier ?

  3. Exemple de fichier /etc/services sous Linux

  4. Lecture d'un fichier CSV avec des requêtes SQL à partir du shell Linux

  5. Édition à distance avec un éditeur local (Linux)

Commande Gunzip sous Linux

Conseils Vim - Modifier des fichiers distants avec Vim sous Linux

Comment monter un système de fichiers Linux distant à l'aide de SSHFS

Comment restaurer une base de données MS SQL depuis SolidCP ?

Comment restaurer la base de données MS SQL à partir de WebsitePanel 2.1 ?

Comment importer mon fichier .sql dans une base de données PostgreSQL ?