首页 文章

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

提问于
浏览
361

我有一些包含数千个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 回答

  • 11

    您可以打开命令提示符并以管理员身份运行 . 然后输入

    ../bin>psql -f c:/...-h localhost -p 5432 -d databasename -U "postgres"
    

    Password for user postgres: 将出现 .

    输入您的密码并输入 . 我无法看到我输入的密码,但是这次当我按下输入它有效 . 实际上我正在将数据加载到数据库中 .

  • 32

    Walk through on how to run an SQL on the command line for PostgreSQL in Linux:

    打开终端并确保可以运行 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)
    
  • 358
    export PGPASSWORD=<password>
    psql -h <host> -d <database> -U <user_name> -p <port> -a -w -f <file>.sql
    
  • 100

    您有四种选择来提供密码:

  • 214

    您可以在命令行上同时提供用户名和PASSSWORD .

    psql "dbname='urDbName' user='yourUserName' password='yourPasswd' host='yourHost'" -f yourFileName.sql
    
  • 21

    你应该这样做:

    \i path_to_sql_file
    

    看到:

    Enter image description here

  • 16

    当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
    

    然后,系统会提示您输入用户的密码 .

  • 6

    通过终端登录到您的数据库并尝试:

    database-# >@pathof_mysqlfile.sql
    

    要么

    database-#>-i pathof_mysqlfile.sql
    

    要么

    database-#>-c pathof_mysqlfile.sql
    
  • 3

    如果您在Linux shell上登录到psql,则命令为:

    \i fileName.sql
    

    对于绝对的道路和

    \ir filename.sql
    

    从你调用psql的相对路径 .

  • 11

    你甚至可以这样做:

    sudo -u postgres psql -d myDataBase -a -f myInsertFile
    

    如果您在机器上有 sudo 访问权限,那么's not recommended for production scripts just for test on your own machine it'是最简单的方法 .

  • 8

    当然,您将在进行身份验证时遇到致命错误,因为您没有包含用户名...

    试试这个,对我来说没关系:)

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

    如果数据库是远程的,请对host使用相同的命令

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

相关问题