Запустить в 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 ответов
У вас есть четыре варианта ввода пароля:
- установите переменную среды PGPASSWORD. Подробнее см. В руководстве:
http://www.postgresql.org/docs/current/static/libpq-envars.html - используйте a .pgpass файл для хранения пароля. Подробнее см. В руководстве:
http://www.postgresql.org/docs/current/static/libpq-pgpass.html - используйте "аутентификацию доверия" для этого конкретного пользователя: http://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-TRUST
- начиная с 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
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
затем вам будет предложено ввести пароль пользователя.
вы можете указать как имя пользователя, так и пароль в самой командной строке.
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, он работает. На самом деле я загружал данные в базу данных.