是否有任何类似于DBMS_METADATA.GET_DDL
的子程序可以将表数据实际导出为INSERT
语句?
例如,使用DBMS_METADATA.GET_DDL('TABLE', 'MYTABLE', 'MYOWNER')
将导出MYOWNER.MYTABLE的CREATE TABLE
脚本。从MYOWNER.MYTABLE生成INSERT
语句的所有数据?
我知道例如TOAD Oracle或SQL Developer可以很快地导出INSERT
语句,但我需要一种更加编程的方式来实现它。此外,我无法在我正在使用的数据库中创建任何过程或函数。
感谢。
答案 0 :(得分:5)
据我所知,没有Oracle提供的软件包可以做到这一点。而且我会对任何声称要实现这一目标的第三方工具持怀疑态度,因为它基本上是不可能的。
我曾经写过这样一个包,很快就后悔了。很容易得到99%的时间都可以使用的东西,但最后1%会杀死你。
如果您真的需要这样的东西,并且需要它非常准确,那么您必须严格控制允许的数据以及可以使用哪些工具来运行脚本。以下是您将面临的一小部分问题:
如果您希望数据准确,您只需使用Oracle实用程序,例如数据泵和导出。
答案 1 :(得分:0)
为什么不使用常规出口?
如果必须,您可以生成导出脚本:
我们假设一个表myTable(Name VARCHAR(30),AGE Number,Address VARCHAR(60))。
select 'INSERT INTO myTable values(''' || Name || ','|| AGE ||',''' || Address ||''');' from myTable
答案 2 :(得分:0)
Oracle SQL Developer通过它的导出功能实现了这一点。 DDL以及数据本身。 对于大型桌子来说可能有点不方便,并且可能会导致上述情况出现问题,但99%的情况下效果很好。