将所有列单位从字节更改为char

Mik*_*yev 4 sql-server oracle

我已经获得了将MS SQL Server中的大型数据库转换为Oracle的任务。该数据库有150多个表,这些表具有许多存储过程和触发器,其中包含许多约束,默认值和关系。现在我想知道两件事:

  1. 一般如何做?我们是否必须为每个对象一个接一个地手动进行操作,或者有更好的方法?
  2. 默认情况下,Oracle中的字符串列以字节为单位创建。如何更新所有表中从字节到字符的所有列?

提前致谢。

gro*_*ter 7

对于2:这将产生将所有BYTE列更新为CHAR的代码

BEGIN
    FOR x in (SELECT * FROM user_tab_columns WHERE data_type LIKE 'VARCHAR%' and CHAR_USED = 'B')
    LOOP
        DBMS_OUTPUT.PUT_LINE('ALTER TABLE '||x.table_name||' MODIFY '||x.column_name||' '||x.data_type||'('||x.data_length||' CHAR)');
    END LOOP;
END;
/
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,我不得不使用“EXECUTE IMMEDIATE”而不是“DBMS_OUTPUT.PUT_LINE” (2认同)

Fil*_*lip 1

我使用 ADO.NET 元数据检索数据库结构的自制批处理将 MS SQL Server 数据库迁移到 Informix。我这样做是因为我找不到适合此转换的工具。我不建议对可以使用现有工具迁移的数据库采用这种方法。
因此,如果迁移到 Oracle,最好使用一些现有工具,如下所示:

http://www.oracle.com/technetwork/database/migration/sqlserver-095136.html