有没有办法从模式的转储中导入模式的所有序列(使用 生成exp full=y
)?我不想导入过程或表,而只想导入所有序列。
我想使用imp
命令。
如果您使用原始导入实用程序,您可以使用四种不同的模式:表模式、用户模式、完整数据库模式和表空间模式。
它们中的每一个都会导入不同类型的对象,但它们不像新的 Data Pump Import 那样可控,您无法准确选择要导入的类型。
请参阅此处的文档。
序列以用户和完整数据库模式导入,但也导入许多其他对象类型,包括过程对象(过程、函数和包)。
我认为您必须使用文本编辑器打开 dmp 文件,然后将 Create Sequence 语句复制粘贴到新的 .sql 文件中。您可以使用 Perl、Ruby 或 shell 脚本来简化此操作,但仅使用 imp 无法做到这一点。
exp 有它的局限性。如果您想使用类似 exp/imp 的解决方案,expdp 是更好的选择。
如果目标只是复制序列,为什么不使用 dbms_metadata 来获取 ddl:
SELECT DBMS_METADATA.GET_DDL('SEQUENCE', u.sequence_name, decode(u.sequence_owner,'SYS','',sequence_owner)) ddl
FROM all_sequences u where sequence_owner = 'SOE' order by sequence_owner, sequence_name;