У меня есть несколько файлов .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 обычно находится в папке «data» вашей установки PostgreSQL.
источник
Ответы:
У вас есть четыре варианта ввода пароля:
http://www.postgresql.org/docs/current/static/libpq-envars.html.
http://www.postgresql.org/docs/current/static/libpq-pgpass.html.
https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING.
источник
-u
параметр, описанный в руководствеКонечно, вы получите фатальную ошибку для аутентификации, потому что вы не включаете имя пользователя ...
Попробуйте это, это нормально для меня :)
Если база данных удаленная, используйте ту же команду с хостом
источник
-a
парам?-a
здесь не нужен. Это «Вывести все непустые строки ввода в стандартный вывод, когда они читаются»Вы должны сделать это так:
Видеть:
источник
Permission denied
chmod 777 myfile
ошибкаPermission denied
была установленаИспользуйте это для выполнения файлов * .sql, когда сервер PostgreSQL находится в другом месте:
Затем вам будет предложено ввести пароль пользователя.
РЕДАКТИРОВАТЬ: обновлено на основе комментария, предоставленного @zwacky
источник
-a
: все эхо,-q
тихо-f
источник
Если вы вошли в psql в оболочке Linux, введите команду:
для абсолютного пути и
для относительного пути, откуда вы назвали PSQL.
источник
Через терминал войдите в свою базу данных и попробуйте это:
или
или
источник
Вы можете указать имя пользователя и PASSSWORD в самой командной строке.
источник
Вы могли бы даже сделать это следующим образом:
Если у вас есть
sudo
доступ на компьютере, и он не рекомендуется для производственных сценариев только для тестирования на вашем компьютере, это самый простой способ.источник
Узнайте, как запустить SQL в командной строке для PostgreSQL в Linux:
Откройте терминал и убедитесь, что вы можете запустить
psql
команду:Моя версия 9.1.6 находится в
/bin/psql
.Создайте простой текстовый файл с именем
mysqlfile.sql
Отредактируйте этот файл, поместите туда одну строку:
Запустите эту команду в командной строке (подставив имя пользователя и имя вашей базы данных для pgadmin и kurz_prod):
Ниже приведен результат, который я получаю на терминале (пароль не запрашивается):
источник
Вы можете открыть командную строку и запустить от имени администратора. Затем введите
Password for user postgres:
появитсяВведите свой пароль и введите. Я не мог видеть пароль, который набирал, но на этот раз, когда я нажал клавишу ввода, он сработал. На самом деле я загружал данные в базу данных.
источник
-d "postgres"
-d
для имени базы данных, проверьтеpsql --help
Я достиг того, что написал (находится в каталоге, где находится мой скрипт)
где
-u user
роль, которой принадлежит база данных, где я хочу выполнить сценарий, затемpsql
подключается кpsql
консоли, после чего-d my_database
,mydatabase
наконец , загружает меня,-a -f file.sql
где-a
выводит весь ввод из сценария и-f
выполняет командыfile.sql
вmydatabase
, а затем завершает работу.Я использую: PSQL (PostgreSQL) 10.12 на (Ubuntu 10.12-0ubuntu0.18.04.1)
источник