使用命令行参数运行PostgreSQL .sql文件

我有一些.sql文件,其中有成千上万的INSERT语句,需要在我的PostgreSQL数据库上运行这些插入,以便将它们添加到表中。 这些文件非常大,无法打开它们并将INSERT语句复制到编辑器窗口并在那里运行。 我在互联网上发现,您可以通过浏览到PostgreSQL安装的bin文件夹来使用以下内容:

psql -d myDataBase -a -f myInsertFile

在我的情况下:

psql -d HIGHWAYS -a -f CLUSTER_1000M.sql

然后我被要求为我的用户输入一个密码,但是我无法输入任何内容,并且当我输入时出现此错误:

psql:FATAL:密码认证失败,用户“myUsername”

为什么它不让我输入密码。 有没有办法解决这个问题,因为我可以运行这些脚本至关重要?

我通过在我的pg_hba.conf文件中添加一个具有以下结构的新条目来解决此问题:

# IPv6 local connections:
host    myDbName    myUserName ::1/128    trust

通常可以在PostgreSQL安装的'data'文件夹中找到pg_hba.conf文件。


你有四个选择来提供密码:

  • 设置PGPASSWORD环境变量。 有关详情,请参阅手册:
    http://www.postgresql.org/docs/current/static/libpq-envars.html
  • 使用.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
    

    如果数据库是远程的,则使用与主机相同的命令

    psql -h host -U username -d myDataBase -a -f myInsertFile
    

    你应该这样做:

    i path_to_sql_file
    

    看到:

    在这里输入图片说明

    链接地址: http://www.djcxy.com/p/65173.html

    上一篇: Run a PostgreSQL .sql file using command line arguments

    下一篇: How to import CSV file data into a PostgreSQL table?