有时候我们需要从SQL Server数据库导入一些表数据到Oracle数据库。
当数据导入成功后却发现按字段进行查询却老是提示列不存在。
这时就需要我们将表名和字段名批量修改为大写方式。
存储过程如下:
create or replace procedure PD_BATCHRENAMETOUPPER AS mysql varchar2(1000); cursor cur is select table_name from user_tables where table_name<>upper(table_name); BEGIN --批量更新表名 FOR row IN cur LOOP mysql:='alter table "'||row.table_name||'" rename to '||upper(row.table_name); dbms_output.put_line(mysql); execute immediate mysql; END LOOP; --批量更新列名 FOR cl IN (SELECT table_name,column_name from user_tab_columns WHERE column_name<>upper(column_name) and upper(column_name) not in('SIZE','CHECK')) LOOP mysql:='alter table '||cl.table_name||' rename column "'|| cl.column_name ||'" to '||upper(cl.column_name); dbms_output.put_line(mysql); execute immediate mysql; END LOOP; END;
执行存储过程即可:
begin PD_BATCHRENAMETOUPPER(); end;
注意:有时候可能字段名是一些关键字,导致执行失败,可以根据错误提示将关键字在存储过程中进行过滤排除,然后重新编辑存储过程再次执行即可。