我有一些包含数千个INSERT语句的.sql文件,需要在我的PostgreSQL数据库上运行这些插件才能将它们添加到表中 . 文件很大,无法打开它们并将INSERT语句复制到编辑器窗口并在那里运行它们 . 我在Internet上发现您可以通过导航到PostgreSQL安装的bin文件夹来使用以下内容:
psql -d myDataBase -a -f myInsertFile
就我而言:
psql -d HIGHWAYS -a -f CLUSTER_1000M.sql
然后我被要求为我的用户输入密码,但我无法输入任何内容,当我点击输入时,我收到此错误:
psql:致命错误:用户“myUsername”的密码验证失败
为什么不让我输入密码 . 有没有办法围绕这个,因为我可以运行这些脚本至关重要?
我通过在pg_hba.conf文件中添加一个具有以下结构的新条目来解决这个问题:
# IPv6 local connections:
host myDbName myUserName ::1/128 trust
pg_hba.conf文件通常可以在PostgreSQL安装的'data'文件夹中找到 .
11 回答
您可以打开命令提示符并以管理员身份运行 . 然后输入
Password for user postgres:
将出现 .输入您的密码并输入 . 我无法看到我输入的密码,但是这次当我按下输入它有效 . 实际上我正在将数据加载到数据库中 .
Walk through on how to run an SQL on the command line for PostgreSQL in Linux:
打开终端并确保可以运行
psql
命令:我的版本是9.1.6,位于
/bin/psql
.创建一个名为
mysqlfile.sql
的纯文本文件编辑该文件,在其中放一行:
在命令行上运行此命令(用您的用户名和数据库名称替换pgadmin和kurz_prod):
以下是我在终端上得到的结果(我没有提示输入密码):
您有四种选择来提供密码:
设置PGPASSWORD环境变量 . 有关详细信息,请参阅手册
http://www.postgresql.org/docs/current/static/libpq-envars.html
使用.pgpass文件存储密码 . 有关详细信息,请参阅手册
http://www.postgresql.org/docs/current/static/libpq-pgpass.html
对该特定用户使用"trust authentication":http://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-TRUST
自PostgreSQL 9.1以来你也可以use a connection string:
https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING
您可以在命令行上同时提供用户名和PASSSWORD .
你应该这样做:
看到:
当PostgreSQL服务器位于不同的位置时,使用此命令执行* .sql文件:
然后,系统会提示您输入用户的密码 .
通过终端登录到您的数据库并尝试:
要么
要么
如果您在Linux shell上登录到psql,则命令为:
对于绝对的道路和
从你调用psql的相对路径 .
你甚至可以这样做:
如果您在机器上有
sudo
访问权限,那么's not recommended for production scripts just for test on your own machine it'是最简单的方法 .当然,您将在进行身份验证时遇到致命错误,因为您没有包含用户名...
试试这个,对我来说没关系:)
如果数据库是远程的,请对host使用相同的命令