У меня есть некоторые .sql файлы с тысячами инструкций INSERT, и вам нужно запустить эти вставки в моей базе данных PostgreSQL, чтобы добавить их в таблицу. Файлы настолько велики, что их невозможно открыть и скопировать инструкции INSERT в окно редактора и запустить их там. Я нашел в Интернете, что вы можете использовать следующее, перейдя в папку bin вашей установки PostgreSQL:
psql -d myDataBase -a -f myInsertFile
В моем случае:
psql -d HIGHWAYS -a -f CLUSTER_1000M.sql
Затем меня спрашивают пароль для моего пользователя, но я не могу ничего вводить, и когда я нажимаю кнопку ввода, я получаю эту ошибку:
psql: FATAL: аутентификация пароля для пользователя "myUsername"
Почему он не позволяет мне вводить пароль. Есть ли способ обойти это, поскольку очень важно, чтобы я мог запускать эти сценарии?
Я обошел эту проблему, добавив новую запись в мой файл pg_hba.conf со следующей структурой:
# IPv6 local connections:
host myDbName myUserName ::1/128 trust
Файл pg_hba.conf обычно можно найти в папке "data" вашей установки PostgreSQL.
Ответ 1
У вас есть четыре варианта доставки пароля:
Ответ 2
Конечно, вы получите фатальную ошибку для аутентификации, потому что вы не включаете имя пользователя...
Попробуйте это, это нормально для меня :)
psql -U username -d myDataBase -a -f myInsertFile
Если база данных удаленная, используйте ту же команду с хостом
psql -h host -U username -d myDataBase -a -f myInsertFile
Ответ 3
Вы должны сделать это следующим образом:
\i path_to_sql_file
См:
![Enter image description here]()
Ответ 4
export PGPASSWORD=<password>
psql -h <host> -d <database> -U <user_name> -p <port> -a -w -f <file>.sql
Ответ 5
Используйте это для выполнения файлов *.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
-a all echo
-q quiet
Затем вам будет предложено ввести пароль пользователя.
РЕДАКТИРОВАТЬ: обновлено на основе комментария, предоставленного @zwacky
Ответ 6
Если вы вошли в psql в оболочке Linux, введите команду:
\i fileName.sql
для абсолютного пути и
\ir filename.sql
для относительного пути, откуда вы назвали PSQL.
Ответ 7
Через терминал войдите в свою базу данных и попробуйте следующее:
database-# >@pathof_mysqlfile.sql
или
database-#>-i pathof_mysqlfile.sql
или
database-#>-c pathof_mysqlfile.sql
Ответ 8
Вы можете указать имя пользователя и PASSSWORD в самой командной строке.
psql "dbname='urDbName' user='yourUserName' password='yourPasswd' host='yourHost'" -f yourFileName.sql
Ответ 9
вы даже можете сделать это следующим образом:
sudo -u postgres psql -d myDataBase -a -f myInsertFile
Если у вас есть sudo
доступ на машине, и он не рекомендуется для производственных скриптов просто для теста на вашей собственной машине, это самый простой способ.
Ответ 10
Просматривайте, как запустить SQL в командной строке для PostgreSQL в Linux:
Откройте терминал и убедитесь, что вы можете запустить команду psql
:
psql --version
which psql
Mine - это версия 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)
Ответ 11
Вы можете открыть командную строку и запустить ее как администратор. Затем введите
../bin>psql -f c:/...-h localhost -p 5432 -d databasename -U "postgres"
Password for user postgres:
появится.
Введите свой пароль и введите его. Я не мог видеть пароль, что я набирал, но на этот раз, когда я нажимаю кнопку ввода, он работал. Фактически я загружал данные в базу данных.