我有一些.sql文件,其中有数千条INSERT语句,需要在我的PostgreSQL数据库上运行这些INSERT,以便将它们添加到表中。这些文件太大了,不可能打开它们并将INSERT语句复制到编辑器窗口中并在那里运行。我在网上发现,你可以通过导航到PostgreSQL安装的bin文件夹来使用以下方法:
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安装的'data'文件夹中找到。
在Linux下,如何在命令行上为PostgreSQL运行SQL语句:
打开一个终端,确保你可以运行psql命令:
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)
在Linux下,如何在命令行上为PostgreSQL运行SQL语句:
打开一个终端,确保你可以运行psql命令:
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)