
求助:如何用C#导出SQL的建表脚本和索引脚本
1个回答
展开全部
有同事要导出一个数据库用户下创建索引的脚本,然后拿到另外一个库里面去执行。很少有这样的需求,问了一下,他们要进行数据迁移,在新的库中要求索引单独放在一个表空间里面,于是就把所有的索引都删除了,进行重建。
本来这个可以用如下方法来实现:
ALTER INDEX index_name rebuild tablespace tbs_name;
既然索引已经删除了,就需要从原数据库中导出创建索引的脚本,索引是依附于表而存在的,没有办法用exp/expdp工具单独导出创建索引的脚本,不过我们可以通过如下方法进行:
1 生成批量导出索引的语句
在sqlplus中运行spool create_create_index.SQLSELECT'select dbms_metadata.get_ddl(''INDEX'', ' || ''''|| INDEX_NAME||'''' || ') from dual;'FROMuser_indexes ;spool off
2 生成创建索引的sql语句
在sqlplus中运行spool create_index.SQL@create_create_index.SQLspool off
得到b.sql文件中即为创建索引的语句
3 创建索引
在sqlplus中运行@create_index.SQL
本来这个可以用如下方法来实现:
ALTER INDEX index_name rebuild tablespace tbs_name;
既然索引已经删除了,就需要从原数据库中导出创建索引的脚本,索引是依附于表而存在的,没有办法用exp/expdp工具单独导出创建索引的脚本,不过我们可以通过如下方法进行:
1 生成批量导出索引的语句
在sqlplus中运行spool create_create_index.SQLSELECT'select dbms_metadata.get_ddl(''INDEX'', ' || ''''|| INDEX_NAME||'''' || ') from dual;'FROMuser_indexes ;spool off
2 生成创建索引的sql语句
在sqlplus中运行spool create_index.SQL@create_create_index.SQLspool off
得到b.sql文件中即为创建索引的语句
3 创建索引
在sqlplus中运行@create_index.SQL
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询