如何通过URI连接的命令行方式将SQL文件导入PostgreSQL数据库?
解决PostgreSQL URI连接下导入SQL脚本的问题
可行方案
方案1:通过-d指定URI并配合-f导入文件
将连接URI通过-d参数传递,同时用-f指定要执行的SQL脚本路径,命令格式如下:
C:\PROGRA~1\PostgreSQL\15.2\bin\psql.exe -d "postgres://mydbadmin:mydbadminpasswd@localhost:5432/mydb" -f "%cd%\myscript.sql"
方案2:通过-d指定URI并配合-c执行\i命令
如果偏好使用\i命令加载脚本,同样用-d指定URI,再通过-c传递执行命令:
C:\PROGRA~1\PostgreSQL\15.2\bin\psql.exe -d "postgres://mydbadmin:mydbadminpasswd@localhost:5432/mydb" -c "\i %cd%\myscript.sql"
方案3:修复管道命令的路径格式
Windows批处理中建议使用反斜杠\作为路径分隔符,同时给路径加上引号避免空格问题,修正后的管道命令:
type "%cd%\myscript.sql" | C:\PROGRA~1\PostgreSQL\15.2\bin\psql.exe "postgres://mydbadmin:mydbadminpasswd@localhost:5432/mydb"
额外注意事项
你的示例INSERT语句中,列列表重复定义了user_id字段,执行时会触发语法错误,需要删除其中一个重复项,修正后的SQL:
-- User INSERT INTO users (user_id, credit, email, passwd, alias_login) VALUES (1, 250, 'test@test.com', '123456', '1111');
内容的提问来源于stack exchange,提问作者Marc Agnetti
相关产品推荐
相关产品推荐

