如何使用 Java 和 PostgreSQL 执行 \d tablename [重复]

Posted

技术标签:

【中文标题】如何使用 Java 和 PostgreSQL 执行 \\d tablename [重复]【英文标题】:How execute \d tablename using Java and PostgreSQL [duplicate]如何使用 Java 和 PostgreSQL 执行 \d tablename [重复] 【发布时间】:2019-08-16 07:09:07 【问题描述】:

如何使用 Java 和 PostgreSQL 执行\d tablename

PreparedStatement pst = jdbc.conn.prepareStatement("\d u_item");
ResultSet set = pst.executeQuery();

错误:

org.postgresql.util.PSQLException: ERROR: syntax error at or near "\"

【问题讨论】:

可以用java执行'\d tablename' sql吗? "\\d u_item" 如果您想在语句中使用反斜杠,则需要用另一个反斜杠对其进行转义。 我已经使用“\\d u_item”执行 仍然错误:“\”处或附近的语法错误 你为什么要这样做?你真正想做什么?你的问题看起来像XY Problem。 【参考方案1】:

\d 是交互式psql client 的命令。它不是 SQL 的一部分。

您不能通过 JDBC 连接执行此命令。

【讨论】:

可以用java查询建表语句吗? 例如:结果 CREATE TABLE "public"."test" ("id" int4 NOT NULL DEFAULT nextval('test_id_seq'::regclass), "name" varchar(255) COLLATE "pg_catalog" ."default", CONSTRAINT "test_pkey" PRIMARY KEY ("id") ) ; ALTER TABLE "public"."test" OWNER TO "postgres";【参考方案2】:

您还可以使用 Postgres java 驱动获取表元数据。

String tableName = "u_item";
ResultSet rs = metaData.getColumns(null, null, tableName.toLowerCase(), null))

当 Postgres 将其名称存储在系统目录中时,表名将转换为小写。

[更新]你检查过this

【讨论】:

我想要结果 CREATE TABLE "public"."test" ("id" int4 NOT NULL DEFAULT nextval('test_id_seq'::regclass), "name" varchar(255) COLLATE "pg_catalog"。 “默认”,约束“test_pkey”主键(“id”)); ALTER TABLE "public"."test" OWNER TO "postgres"; 我要查询创建表,而不是添加创建表 从 PgResultSetMetaData 获取结果时可能需要做一些操作

以上是关于如何使用 Java 和 PostgreSQL 执行 \d tablename [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PredicateBuilder、EF Core 5 和 Postgresql 10+ 执行不区分大小写和重音的 LIKE(子字符串)查询?

Clojure PostgreSQL JDBC执行查询时不断出错

如何在 postgresql 中使用不同的返回数据执行多个选择查询?

Java,PostgreSQL时间范围查询

如何在 PostgreSQL 中默认撤销函数的执行权限

为啥我在从 Java 批量执行 PostgreSQL 存储过程时收到错误消息,提示“未预期结果”?