我正在将一个数据库从postgres转换到mysql。
由于我找不到一个能自动完成此任务的工具,因此我将在mysql中将所有postgres序列转换为具有自动增量值的自动增量i。
那么,如何使用查询列出Postgres DB (SQL8.1版本)中的所有序列以及使用它的表、下一个值等信息?
请注意,我不能在8.4版本中使用information_schema.sequences
视图。
发布于 2009-10-23 14:28:07
下面的查询给出了所有序列的名称。
SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';
通常,序列被命名为${table}_id_seq
。简单的正则表达式模式匹配将为您提供表名。
要获取序列的最后一个值,请使用以下查询:
SELECT last_value FROM test_id_seq;
发布于 2014-11-06 19:31:02
注意,从PostgreSQL 8.4开始,您可以通过以下方式获取有关数据库中使用的序列的所有信息:
SELECT * FROM information_schema.sequences;
由于我使用的是更高版本的PostgreSQL (9.1),并且到处都在搜索相同的答案,所以为了子孙后代和未来的搜索者,我添加了这个答案。
发布于 2009-09-29 16:04:24
使用-E
标志启动psql
(“回应\d
和其他反斜杠命令生成的实际查询”),然后输入\ds
命令以列出所有序列。您应该会看到类似下面这样的内容:
# \ds
********* QUERY **********
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('S','')
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
**************************
List of relations
Schema | Name | Type | Owner
--------+--------------------------------+----------+-------
public | assignments_id_seq | sequence | root
public | framework_users_id_seq | sequence | root
public | lending_items_id_seq | sequence | root
public | proxy_borrower_requests_id_seq | sequence | root
public | roles_id_seq | sequence | root
public | stack_requests_id_seq | sequence | root
(6 rows)
要检查特定的序列,可以运行\d <sequence name>
# \d lending_items_id_seq
********* QUERY **********
(...about four queries...)
**************************
Sequence "public.lending_items_id_seq"
Type | Start | Minimum | Maximum | Increment | Cycles? | Cache
--------+-------+---------+---------------------+-----------+---------+-------
bigint | 1 | 1 | 9223372036854775807 | 1 | no | 1
Owned by: public.lending_items.id
https://stackoverflow.com/questions/1493262
复制相似问题