zoukankan      html  css  js  c++  java
  • sql server 2005导出数据到oracle

    一. 在sql server下处理需要导出的数据库

      1. 执行以下sql,查出所有'float'类型的字段名,手动将float类型改为decimal(18,4).

    select 表名=d.name,字段名=a.name,类型=b.name 
    FROM syscolumns a 
    left join systypes b on a.xtype=b.xusertype
    inner join sysobjects d on a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
    where b.name in ('float')
    order by d.name;
    View Code

      2. 执行以下sql,查出sql server中的字段名在oracle属于内部关键词,并手动修改.

    select 表名=d.name,字段名=a.name 
    FROM syscolumns a 
    inner join sysobjects d on a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
    where a.name in ('NUMBER','LEVEL','ROW','rowNum','rows','mode') 
    order by a.id,a.colorder
    View Code

      3. 查询类型为text并且值为空的字段,设置为'-',否则导出时会报错误(该语句查询出一组sql语句),将查询出来的一组sql语句全部拷贝出来并全部执行.

    select 'update '+ d.name +' set '+ a.name +'=''-'' where '+ a.name +' like '''''
    FROM syscolumns a 
    left join systypes b on a.xtype=b.xusertype
    inner join sysobjects d on a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
    where b.name in ('TEXT') 
    order by d.name
    View Code

      4. 执行下列存储过程,将所有数据表的列名大写.

    /*修改列名大写*/
    drop procedure columnNameToUpper
    go
    
    /*创建存储过程*/
    create procedure columnNameToUpper
    as
    /*声明变量*/
    declare @tableName varchar(128),
            @columnName varchar(128)
    
    /*声明游标*/
    declare @cursorVar Cursor
    /*给游标赋值*/
    set @cursorVar=Cursor For
    select obj.name,upper(col.name) from  syscolumns col,sysobjects obj 
    where obj.xtype='U' and obj.id=col.id;
    
    /*打开游标*/
    Open @cursorVar
        /*取一条数据赋给变量*/
        Fetch Next From @cursorVar Into @tableName,@columnName
        /*声明执行语句变量*/
        Declare @executeSql nvarchar(2000)
    
        While(@@FETCH_STATUS=0)
        Begin
            /*获得要执行的SQL语句*/
            set @executeSql=N'exec  sp_rename '''+@tableName+'.'+@columnName+''','''+@columnName+''''; 
            /*动态执行存储过程*/
            execute sp_executesql @stmt=@executeSql
            /*取下一条数据*/    
            Fetch Next From @cursorVar Into @tableName,@columnName
        End
    /*关闭游标*/
    Close @cursorVar
    
    /*释放资源*/
    Deallocate @cursorVar
    /*返回*/
    Return 
    /*将上一个go到此的存储过程提交数据库执行*/
    go
    
    /*执行存储过程*/
    execute columnNameToUpper
    View Code

      5. 执行下列存储过程,将所有表名大写.

    /*修改表名大写*/
    drop procedure tableNameToUpper
    go
    
    /*创建存储过程*/
    create procedure tableNameToUpper
    as
    
    /*声明变量*/
    declare @tableName varchar(128),
            @uptableName varchar(128)
    
    /*声明游标*/
    declare @cursorVar Cursor
    /*给游标赋值*/
    set @cursorVar=Cursor For
    select obj.name,upper(obj.name) 
    from  sysobjects obj 
    where obj.xtype='U' and name!='dtproperties';
    
    /*打开游标*/
    Open @cursorVar
    /*取一条数据赋给变量*/
    Fetch Next From @cursorVar Into @tableName,@uptableName
    /*声明执行语句变量*/
    Declare @executeSql nvarchar(2000)
    
    While(@@FETCH_STATUS=0)
    Begin
        /*获得要执行的SQL语句*/
        set @executeSql=N'exec  sp_rename '''+@tableName+''','''+@uptableName+''''; 
        /*动态执行存储过程*/
        execute sp_executesql @stmt=@executeSql
        /*取下一条数据*/    
        Fetch Next From @cursorVar Into @tableName,@uptableName
    End
    /*关闭游标*/
    Close @cursorVar
    
    /*释放资源*/
    Deallocate @cursorVar
    /*返回*/
    Return 0
    go
    
    /*执行存储过程*/
    execute tableNameToUpper
    View Code


    二. 在oracle下以system用户登录进行处理

      1. 创建表空间

    create tablespace ST10005(表空间名)
    datafile 'D:oracledbST10005.ora' (数据文件存放地点 D:oracledb文件夹要先存在)
    size 500M
    default storage
    (initial 200m
    next 50m
    minextents 20
    maxextents 500)
    online; 
    View Code

      2. 创建用户 (指定默认表空间 和 临时表空间 指定连接状态)

    CREATE USER ST10005(用户名) PROFILE DEFAULT IDENTIFIED BY ep(密码) DEFAULT 
    TABLESPACE ST10005(表空间名) TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK;
    View Code

      3. 为用户授权

    grant connect,resource,dba to ST10005(用户名);
    View Code


    三. 用sql server 2005自带的导入工具将数据导入到oracle

      1. 在要导出的数据库上点击鼠标右键,选择"任务"》"导出数据"

      2. 依次点击下一步,在"选择数据源"页面填写相应选项

        

       3. 在"选择目标"页,目标栏选择"Oracle Provider for OLE DB",点击属性会弹出个数据链接属性的对话框;如下图

    数据源一栏填写的是用PLSQL连接时的database;用户名一栏都要用大写的;同时要选中“允许保存密码”选项。

      4. 接着下一步直到选择源表和源视图,选择要导入的表,注意:一次不能选太多的表,否则会弹出一个警告,

        如弹出了警告,就要少选几个表,如果不弹出警告,就下一步直到完成。

      5. 重复1-4步操作几次,将所有的表都导入进去

    四. 导入完成后,还需执行以下几步操作

      1. 检查表的数目是否正确

        a. sql server下执行

    select count(*) from  sysobjects obj where obj.xtype='U' and name!='dtproperties';
    View Code

        b. oracle下执行

    select count(*) from user_tables;
    View Code

      2. 建立视图、主键、外键、索引等

  • 相关阅读:
    C#设计模式(4)-抽象工厂模式
    【oracle常见错误】ora-00119和ora-00132问题的解决方法
    版本管理工具Git(3)VS2013下如何使用git
    版本管理工具Git(2)git的使用
    C#设计模式(3)-工厂方法模式
    C#设计模式(2)-简单工厂模式
    C# WinForm 技巧:控件截图
    C# WinForm 技巧:COMBOBOX搜索提示
    C# Activator.CreateInstance()方法使用
    visio二次开发——图纸解析之形状
  • 原文地址:https://www.cnblogs.com/Mr-kevin/p/5627605.html
Copyright © 2011-2022 走看看