现在需要将项目从sqlserver移植到oracle,我能在sqlserver中“生成SQL脚本”导出.sql文件。
请问需要做什么才能成功移植到oracle呢?需要注意什么呢?谢谢!

解决方案 »

  1.   

    下面的是sqlserver中导出的sql文件。幸好没有procedure,triger。我想修改其中的Creat语句放在oracle的
    sql plus 运行。应该怎么改呢?希望高手指点,谢谢。CREATE TABLE [dbo].[Permission] (
    [intPID] [int] IDENTITY (1, 1) NOT NULL ,
    [strPName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [intResID] [int] NULL ,
    [setOperation] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [intIsAnonymous] [int] NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [dbo].[FileType] (
    [TID] [int] IDENTITY (1, 1) NOT NULL ,
    [strTypeName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [intParentID] [int] NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [dbo].[Files] (
    [FID] [int] IDENTITY (1, 1) NOT NULL ,
    [strFileName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [strTitle] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [strPreview] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [dateUpload] [smalldatetime] NOT NULL ,
    [TID] [int] NOT NULL ,
    [strAuthor] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [intSize] [int] NULL ,
    [strFileMemo] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [intDownTimes] [int] NOT NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [dbo].[Resource] (
    [intResID] [int] IDENTITY (1, 1) NOT NULL ,
    [strResName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [dbo].[Roles] (
    [intRoleID] [int] IDENTITY (1, 1) NOT NULL ,
    [strRName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [setPermissions] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [intInherat] [int] NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [dbo].[UserGroup] (
    [intUGID] [int] IDENTITY (1, 1) NOT NULL ,
    [strGroupName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [dbo].[Users] (
    [intUID] [int] IDENTITY (1, 1) NOT NULL ,
    [strUserName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [strPassword] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [setRoles] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [intUGID] [int] NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [dbo].[guestbook_admin] (
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [user] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [psw] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [title] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    [pageshownumber] [int] NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [dbo].[guestbook_user] (
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [username] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [userpwd] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [qq] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [email] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [http] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [sex] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [regtime] [smalldatetime] NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [dbo].[message] (
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [content] [text] COLLATE Chinese_PRC_CI_AS NULL ,
    [recontent] [text] COLLATE Chinese_PRC_CI_AS NULL ,
    [sex] [bit] NULL ,
    [qq] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [email] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [http] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
    [ltime] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [ip] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [userid] [int] NULL 
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GOCREATE TABLE [dbo].[system] (
    [adminname] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [adminpassword] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [name] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    [title] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [web] [varchar] (300) COLLATE Chinese_PRC_CI_AS NULL ,
    [news] [text] COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
      

  2.   

    两种库好多字段类型不一样,范围也不一样.改起来相当麻烦.
    你可以尝试使用SQL SERVER的导入导出工具,直接把表和数据导入ORACLE.SQL和ORACLE之间的数据查询配置透明网关的步骤
    前一段花了些时间配置 TRANSPARENT GATEWAY
    现在把心得贴出来与大家共享我的OS是WIN2000  
    ORACLE 9.0
    SQLSERVER2000
    HOSTNAME : SVR1
    都使用 tcp/ip 默认端口
    1: 安装 TRANSPARENT GATEWAY 选件(我安装的是FOR MSSQL)
       安装完成了以后有这样一个目录 oracle_home\ora90\tg4msql2: 配置 LISTENER.ORA
        (SID_DESC =
          (GLOBAL_DBNAME = tg4sql) # 可自己命名
          (PROGRAM = tg4msql)
          (SID_NAME = sql2000)  # SID 自己命名
          (ORACLE_HOME = D:\oracle\ora90)
        )3: 在 oracle_home\ora90\tg4msql\admin
       建文件 init<SID>.ora 由于LISTENER里定义SID为 sql2000
       因此文件名为:initsql2000.ora
       其中内容为:
       HS_FDS_CONNECT_INFO=svr1.master # svr1为SQL服务器名
       HS_FDS_TRACE_LEVEL=OFF
       HS_FDS_RECOVERY_ACCOUNT=RECOVER
       HS_FDS_RECOVERY_PWD=RECOVER4: 重启 DATABASE AND LISTENER5: 配置 tnsnames.ora
    tg_sql = 
      (DESCRIPTION = 
        (ADDRESS_LIST = 
          (ADDRESS = (PROTOCOL = TCP)(HOST = SVR1)(PORT = 1521)) 
        ) 
        (CONNECT_DATA = 
          (SID = sql2000) 
        ) 
        (HS=OK) 
      ) 6: 建立 DATABASE LINK
    CREATE PUBLIC DATABASE LINK DB_SQL
    CONNECT TO SA IDENTIFIED BY PASSWORD
    USING 'tg_sql'7: 完成,测试
      select * from t_test@db_sql8: 请注意使用 DBLINK 时,INIT.ORA中 GLOBAL_NAME 的设置,
      如果为 ture , 请使用DBLINK的全称,可在 all_db_links 中查到,
      如果为 FALSE, 不必使用全称,当出现 
      “ORA-02019:为找到远程数据库的连接说明”
      时,请使用全称,如:
      select * from t_test@db_sql.US.ORACLE.COM
      

  3.   

    看了下你的脚本,转到oracle问题不是很大,只需要改变些数据类型和语法即可varchar改为varchar2
    int改为number(10)
    IDENTITY 类型的主键改用sequence
    注释的[]符号在oracle中换成""另外附一个oracle下建表的简单语句:
    create table test(
    sname varchar2(10),
    sex   char(1)
    );
      

  4.   

    lpc19598188兄台:
    照你的说法,下面的语句怎么办?
     
    String condition="select * from system";
    rs=stmt.executeQuery(condition);
    rs.next();因为在oracle中执行:select * from system 会写成select * from "system"
    那么我应该怎么么改上述代码?
      

  5.   

    sqlserver的select * from system在oracle要改成select * from "SCOTT"."system"但在
    String condition="select * from system"; 
    rs=stmt.executeQuery(condition); 
    rs.next(); 
    我就不知道怎么改了