CSh*_*ned 481 postgresql command-line psql
我有一些包含数千个INSERT语句的.sql文件,需要在我的PostgreSQL数据库上运行这些插件才能将它们添加到表中.文件很大,无法打开它们并将INSERT语句复制到编辑器窗口并在那里运行它们.我在Internet上发现您可以通过导航到PostgreSQL安装的bin文件夹来使用以下内容:
psql -d myDataBase -a -f myInsertFile
Run Code Online (Sandbox Code Playgroud)
就我而言:
psql -d HIGHWAYS -a -f CLUSTER_1000M.sql
Run Code Online (Sandbox Code Playgroud)
然后我被要求为我的用户输入密码,但我无法输入任何内容,当我点击输入时,我收到此错误:
psql:致命错误:用户"myUsername"的密码验证失败
为什么不让我输入密码.有没有办法围绕这个,因为我可以运行这些脚本至关重要?
我通过在pg_hba.conf文件中添加一个具有以下结构的新条目来解决这个问题:
# IPv6 local connections:
host myDbName myUserName ::1/128 trust
Run Code Online (Sandbox Code Playgroud)
pg_hba.conf文件通常可以在PostgreSQL安装的'data'文件夹中找到.
小智 433
当然,验证时会出现致命错误,因为您没有包含用户名...
试试这个,对我来说没关系:)
psql -U username -d myDataBase -a -f myInsertFile
Run Code Online (Sandbox Code Playgroud)
如果数据库是远程的,请对host使用相同的命令
psql -h host -U username -d myDataBase -a -f myInsertFile
Run Code Online (Sandbox Code Playgroud)
Rac*_*naa 282
你应该这样做:
\i path_to_sql_file
Run Code Online (Sandbox Code Playgroud)
看到:

a_h*_*ame 136
您有四种选择来提供密码:
vis*_*219 42
export PGPASSWORD=<password>
psql -h <host> -d <database> -U <user_name> -p <port> -a -w -f <file>.sql
Run Code Online (Sandbox Code Playgroud)
GPr*_*hap 37
当PostgreSQL服务器位于不同的位置时,使用此命令执行*.sql文件:
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
Run Code Online (Sandbox Code Playgroud)
然后,系统会提示您输入用户的密码.
编辑:根据@zwacky提供的评论进行更新
小智 30
如果您在Linux shell上登录到psql,则命令为:
\i fileName.sql
Run Code Online (Sandbox Code Playgroud)
对于绝对的道路和
\ir filename.sql
Run Code Online (Sandbox Code Playgroud)
从你调用psql的相对路径.
Sat*_*rma 25
通过终端登录到您的数据库并尝试:
database-# >@pathof_mysqlfile.sql
Run Code Online (Sandbox Code Playgroud)
要么
database-#>-i pathof_mysqlfile.sql
Run Code Online (Sandbox Code Playgroud)
要么
database-#>-c pathof_mysqlfile.sql
Run Code Online (Sandbox Code Playgroud)
Dee*_*hni 15
您可以在命令行上同时提供用户名和PASSSWORD.
psql "dbname='urDbName' user='yourUserName' password='yourPasswd' host='yourHost'" -f yourFileName.sql
Run Code Online (Sandbox Code Playgroud)
小智 13
psql -h localhost -d userstoreis -U admin -p 5432 -a -q -f /home/jobs/Desktop/resources/postgresql.sql
Run Code Online (Sandbox Code Playgroud)
参数解释:
-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
Run Code Online (Sandbox Code Playgroud)
你甚至可以这样做:
sudo -u postgres psql -d myDataBase -a -f myInsertFile
Run Code Online (Sandbox Code Playgroud)
如果你有sudo机器上的访问权限,并且不建议用于生产脚本只是为了在你自己的机器上进行测试,这是最简单的方法.
介绍如何在Linux的PostgreSQL命令行上运行SQL:
打开终端并确保您可以运行psql命令:
psql --version
which psql
Run Code Online (Sandbox Code Playgroud)
我的版本是9.1.6 /bin/psql.
创建一个名为的纯文本文件 mysqlfile.sql
编辑该文件,在其中放一行:
select * from mytable;
Run Code Online (Sandbox Code Playgroud)
在命令行上运行此命令(用您的用户名和数据库名称替换pgadmin和kurz_prod):
psql -U pgadmin -d kurz_prod -a -f mysqlfile.sql
Run Code Online (Sandbox Code Playgroud)
以下是我在终端上获得的结果(我没有提示输入密码):
select * from mytable;
test1
--------
hi
me too
(2 rows)
Run Code Online (Sandbox Code Playgroud)
2021 解决方案
如果您的 PostgreSQL 数据库在您的本地系统上。
psql dbname < sqldump.sql username
Run Code Online (Sandbox Code Playgroud)
如果它在线托管
psql -h hostname dbname < sqldump.sql username
Run Code Online (Sandbox Code Playgroud)
如果您有任何疑问或问题,请在评论中提出。