如何使用 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执行查询时不断出错