如何使用 perform a select on table under schema in postgres Database?
How to use perform a select on table under schema in postgres Database?
我正在尝试对 postgres 数据库 table 执行 select 操作
我收到以下错误:
[etb@centos etbtest]$ ./a.out
Opened database successfully: ETBDB
ERROR: relation "etb_reference.etb_member" does not exist
LINE 1: SELECT * FROM etb_reference.ETB_MEMBER
我们如何在 libpq++ exec 函数中引用架构名称?
我尝试使用其他转义选项(例如 "
、'
、\
等转义模式名称,但没有帮助。
我的代码:
try {
connection C("dbname = ETBDB user = etbadm password = etbtest \
hostaddr = 127.0.0.1 port = 5432");
if (C.is_open()) {
cout << "Opened database successfully: " << C.dbname() << endl;
} else {
cout << "Can't open database" << endl;
return 1;
}
work wrk(C);
result res = wrk.exec("SELECT * FROM etb_reference.ETB_MEMBER");
for (
pqxx::result::const_iterator row = res.begin();
row != res.end();
++row)
{
std::cout
<< row["MEMBER_ID"].as<int>() << "\t"
<< row["SYS_CRE_DATE"].as<std::string>() << "\t"
<< row["SYS_UPD_DATE"].as<std::string>() << "\t"
<< row["MEMBER_CS"].as<std::string>() << "\t"
<< row["MEMBER_TD"].as<std::string>() << "\t"
<< row["MEMBER_ASD"].as<std::string>() << "\t"
<< row["MEMBER_ITM"].as<std::string>() << "\t"
<< std::endl;
}
C.disconnect ();
return 0;
} catch (const std::exception &e) {
cerr << e.what() << std::endl;
return 1;
}
}
我可以执行 set search_path to 'schema'
但我已按数据库划分为应用程序 tables、引用 tables、配置 tables 等模式,以便于移植管理并通过自动化 shell 和数据库脚本进行维护。
Opened database successfully: ETBDB ERROR: relation
"etb_reference.etb_member" does not exist LINE 1: SELECT * FROM
etb_reference.ETB_MEMBER
错误消息包含小写的 table 名称。它还会打印发生错误的行,并且该行包含大写的 table 名称。
SELECT * FROM etb_reference."ETB_MEMBER"
当您手动查询时,您使用大写并将 table 名称放在双引号之间。
PostgreSQL 默认使用小写字母,除非名称在双引号之间,因此要解决此问题,只需在查询中将 table 名称放在双引号之间(或者,更好的是,只使用小写案例名称)
我正在尝试对 postgres 数据库 table 执行 select 操作 我收到以下错误:
[etb@centos etbtest]$ ./a.out
Opened database successfully: ETBDB
ERROR: relation "etb_reference.etb_member" does not exist
LINE 1: SELECT * FROM etb_reference.ETB_MEMBER
我们如何在 libpq++ exec 函数中引用架构名称?
我尝试使用其他转义选项(例如 "
、'
、\
等转义模式名称,但没有帮助。
我的代码:
try {
connection C("dbname = ETBDB user = etbadm password = etbtest \
hostaddr = 127.0.0.1 port = 5432");
if (C.is_open()) {
cout << "Opened database successfully: " << C.dbname() << endl;
} else {
cout << "Can't open database" << endl;
return 1;
}
work wrk(C);
result res = wrk.exec("SELECT * FROM etb_reference.ETB_MEMBER");
for (
pqxx::result::const_iterator row = res.begin();
row != res.end();
++row)
{
std::cout
<< row["MEMBER_ID"].as<int>() << "\t"
<< row["SYS_CRE_DATE"].as<std::string>() << "\t"
<< row["SYS_UPD_DATE"].as<std::string>() << "\t"
<< row["MEMBER_CS"].as<std::string>() << "\t"
<< row["MEMBER_TD"].as<std::string>() << "\t"
<< row["MEMBER_ASD"].as<std::string>() << "\t"
<< row["MEMBER_ITM"].as<std::string>() << "\t"
<< std::endl;
}
C.disconnect ();
return 0;
} catch (const std::exception &e) {
cerr << e.what() << std::endl;
return 1;
}
}
我可以执行 set search_path to 'schema'
但我已按数据库划分为应用程序 tables、引用 tables、配置 tables 等模式,以便于移植管理并通过自动化 shell 和数据库脚本进行维护。
Opened database successfully: ETBDB ERROR: relation "etb_reference.etb_member" does not exist LINE 1: SELECT * FROM etb_reference.ETB_MEMBER
错误消息包含小写的 table 名称。它还会打印发生错误的行,并且该行包含大写的 table 名称。
SELECT * FROM etb_reference."ETB_MEMBER"
当您手动查询时,您使用大写并将 table 名称放在双引号之间。
PostgreSQL 默认使用小写字母,除非名称在双引号之间,因此要解决此问题,只需在查询中将 table 名称放在双引号之间(或者,更好的是,只使用小写案例名称)