Запустите PostgreSQL.sql-файл с использованием аргументов командной строки


у меня есть некоторые .sql-файлы с тысячами инструкций INSERT в них и должны запускать эти вставки в моей базе данных PostgreSQL, чтобы добавить их в таблицу. Файлы настолько велики, что невозможно открыть их и скопировать инструкции INSERT в окно редактора и запустить их там. Я нашел в интернете, что вы можете использовать следующее, перейдя в папку bin вашей установки PostgreSQL:

psql -d myDataBase -a -f myInsertFile

В моем случае:

psql -d HIGHWAYS -a -f CLUSTER_1000M.sql

затем меня спрашивают для пароля для моего пользователя, но я ничего не могу ввести, и когда я нажимаю enter, я получаю эту ошибку:

psql: FATAL: ошибка аутентификации пароля для пользователя "myUsername"

почему он не позволяет мне ввести пароль. Есть ли способ обойти это, поскольку очень важно, чтобы я мог запускать эти сценарии?

Я обошел эту проблему, добавив новую запись в моем pg_hba.conf файл со следующей структурой:

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

в файле pg_hba.conf может обычно можно найти в папке "данные" вашей установки PostgreSQL.

11 338

11 ответов:

У вас есть четыре варианта для ввода пароля:

  1. установите переменную среды PGPASSWORD. Для получения дополнительной информации см. Руководство:
    http://www.postgresql.org/docs/current/static/libpq-envars.html
  2. использовать .pgpass файл для хранения пароля. Для получения дополнительной информации см. Руководство:
    http://www.postgresql.org/docs/current/static/libpq-pgpass.html
  3. используйте "аутентификацию доверия" для этого конкретного пользователя: http://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-TRUST
  4. начиная с PostgreSQL 9.1 вы также можете используйте строку подключения:
    https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING

конечно, вы получите фатальную ошибку для аутентификации, потому что вы не включаете имя пользователя...

попробуйте это, это нормально для меня:)

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

если база данных удалена, используйте ту же команду с host

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

вы должны сделать это так:

\i path_to_sql_file

посмотреть:

Enter image description here

export PGPASSWORD=<password>
psql -h <host> -d <database> -U <user_name> -p <port> -a -w -f <file>.sql

через терминал войдите в свою базу данных и попробуйте следующее:

database-# >@pathof_mysqlfile.sql

или

database-#>-i pathof_mysqlfile.sql

или

database-#>-c pathof_mysqlfile.sql

использовать это для выполнения *.sql-файлы, когда сервер PostgreSQL расположен в другом месте:

psql -h localhost -d userstoreis -U admin -p 5432 -a -q -f /home/jobs/Desktop/resources/postgresql.sql

-h PostgreSQL server IP address
-d database name
-U user name
-p port which PostgreSQL server is listening on
-f path to SQL script

затем вам будет предложено ввести пароль пользователя.

вы можете указать имя пользователя и PASSSWORD в самой командной строке.

   psql "dbname='urDbName' user='yourUserName' password='yourPasswd' host='yourHost'" -f yourFileName.sql

Если вы вошли в psql на оболочке Linux команда:

\i fileName.sql

для абсолютного пути и

\ir filename.sql

для относительного пути, Откуда вы вызвали psql.

вы даже можете сделать это таким образом:

sudo -u postgres psql -d myDataBase -a -f myInsertFile

Если у вас sudo доступ на машине, и это не рекомендуется для производственных сценариев только для тестирования на собственной машине это самый простой способ.

пройдите, как запустить SQL в командной строке для PostgreSQL в Linux:

открыть терминал и убедитесь, что вы можете запустить :

psql --version
which psql

моя версия 9.1.6 находится в /bin/psql.

создать обычный текстовый файл под названием mysqlfile.sql

отредактируйте этот файл, поместите туда одну строку:

select * from mytable;

выполните эту команду в командной строке (заменив имя пользователя и имя базы данных для pgadmin и kurz_prod):

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

следующий результат я получаю на терминале (мне не предлагается ввести пароль):

select * from mytable;

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

(2 rows)

Вы можете открыть командную строку и запустить от имени администратора. Затем введите

../bin>psql -f c:/...-h localhost -p 5432 -d databasename -U "postgres"

Password for user postgres: появится.

введите пароль и введите. Я не мог видеть пароль, который я набирал, но на этот раз, когда я нажимаю enter, он работал. На самом деле я загружал данные в базу данных.