在pgAdmin III中导入.sql文件

11

我想在PostgreSQL中导入一个sql文件,我正在使用pgadmin iii。我在phpmyadmin中创建了一个sql文件,现在我想在pgadmin iii中导入同样的文件。 我按照以下步骤操作,但对我没有起作用。 我在pgadmin iii中选择数据库模式,然后尝试执行以下查询:

\i C:/Users/umair/Downloads/school_management_system(1).sql

但是它会生成一个错误,错误信息为:

ERROR:  syntax error at or near "\"
LINE 1: \i C:/Users/umair/Downloads/school_management_system(1).sql
        ^
********** Error **********

ERROR: syntax error at or near "\"
SQL state: 42601
Character: 1

请帮帮我。


你正在pgAdmin中使用psql命令,但这是行不通的。请查看pgAdmin的文档 - Milen A. Radev
5个回答

18

我认为导入SQL文件的最佳方式是使用psql工具,如下所示:

psql -U postgres -h localhost -d my_database -f "C:/Users/umair/Downloads/school_management_system(1).sql"

1
谢谢回复,但还没有解决问题。它生成以下错误:错误:在“psql”附近或附近的语法错误 第1行:psql -U postgres -h localhost -d my_database -f 'C:/Users/um... ^ ********** 错误 **********错误:在“psql”附近或附近的语法错误 SQL状态:42601 字符:1 - user1954209
@user1954209 我认为这是引号的问题,我只是将单引号 ' 替换为双引号 " - Houari
感谢Houari的回复,也许在执行查询之前我错过了一些步骤,因为仍然出现相同的错误。 :( - user1954209

11

在pgAdmin中无法直接导入普通的 *sql 文件,它只支持通过 (pg_restore - 此为pgAdmin后台使用的方式) 创建的自定义导入。

你应该使用命令行而不是pgAdmin完成这个任务。你对另一个答案的评论表明你是从pgAdmin执行了该命令。这样做是行不通的。

psql -U username -h localhost -d database_name < path/to/your/file.sql

请注意,-h是可选的,并且取决于您如何连接到系统。


@Houari已经向您展示了它,我只是在他的答案上进行了扩展,但我可以更新我的答案。 - DrColossos

2
在Windows上,我只能从常规CMD控制台窗口运行psql命令,而不能像安装了git一样从bash窗口运行。你应该在某个位置找到类似C:\Program Files\PostgreSQL\9.4\bin的psql.exe文件。

0

如果您使用的是Windows系统,请使用pgsql Shell。输入您的服务器、数据库和用户信息,然后运行,不需要任何引号。

\i D:/folder/your_table.sql

0

@DrColossos是正确的。您必须在包含psql.exe可执行文件的目录中从命令行使用该命令。

请记住,如果您正在使用此命令替换系统上已有的数据库,则必须在运行命令之前删除该数据库。

如果在运行命令后出现奇怪的索引问题,请参见此教程以了解如何修复它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接