我正在从oracle迁移到postgreSQL。 在我的应用程序中,我有很多这样的查询
ResultSet resultSet = statement.executeQuery("SELECT NAME FROM Table_name");
但是我失败了
错误:关系“ table_name”不存在。
据我了解,我还需要提供架构名称,当我执行这样的操作时,它会起作用:
ResultSet resultSet = statement.executeQuery("SELECT NAME FROM schema_name.Table_name");
因此,基本上我的问题是-如何避免重构所有查询?
答案 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'
重新启动数据库。