PosgreSQL-错误:关系“ table_name”不存在。如何查询没有模式名称?

时间:2018-11-08 11:43:46

标签: sql database postgresql database-migration

我正在从oracle迁移到postgreSQL。 在我的应用程序中,我有很多这样的查询

ResultSet resultSet = statement.executeQuery("SELECT NAME FROM Table_name");

但是我失败了

  

错误:关系“ table_name”不存在。

据我了解,我还需要提供架构名称,当我执行这样的操作时,它会起作用:

ResultSet resultSet = statement.executeQuery("SELECT NAME FROM schema_name.Table_name");

因此,基本上我的问题是-如何避免重构所有查询?

3 个答案:

答案 0 :(得分:1)

您要将Postgres中的表放入public模式(默认)或使用搜索路径。

documentation对此进行了解释。

答案 1 :(得分:1)

import re articlesBody = None with open('F:\CloudStation\Bocconi University\MSc. Thesis\\test folder\majortest.txt', 'r') as txt: inputtext = txt.read() articlesBody = re.findall(r'BODY:(.+?)\d\sDOCUMENTS', inputtext, re.S) #print(articlesBody) #print(type(articlesBody)) with open('result.csv', 'w') as csv: for item in articlesBody: item = item.replace('\n', ' ') csv.write('"%s",' % item) 定义了要搜索不合格名称的模式的顺序和列表。默认情况下为searchpath,因此首先查找用户架构,然后查找"$user", public

您可以通过以下方式更改此顺序:

public

有关更多详细信息,请参见here

例如,您可以在打开连接后进行配置。

或者,您可以为用户设置一次:

SET search_path TO schema_name,public;

答案 2 :(得分:0)

如上所述,此命令将设置当前会话的搜索路径

SET search_path TO schema_name,public;

但是,如果需要在所有会话中执行此操作,只需修改配置文件-pgsql / 11 / data / postgresql.conf 添加搜索路径

search_path = '"$user", YOUR_SCHEMA'

重新启动数据库。