• 利用ODBC从SQLServer向Oracle中导数据


    1、首先要在Oracle数据库中建对应的表,Oracle数据库中的字段类型和Sql Server 有所不同,Oracle中常用的有varchar2、integer、nchar、date,Sql Server 的字段类型相对多一些,uniqueidentifier类型的长度是36。

    2、打开管理工具——数据源(ODBC),配置SqlServer的数据源。

    3、打开Oracle数据库——工具——ODBC导入

    4、选择服务器,输入数据库账号和密码

    5、选择用户和表,然后点击左下角的导入按钮即可

    6、附上由SqlServer表自动生成Oracle的代码:

    /********1.定义变量*********/ DECLARE @table_id int, @table_name varchar(100), @column_id int, @c_name sysname, @c_type varchar(50), @max_length smallint, @precision tinyint, @scale tinyint, @is_nullable bit, @cons_sql varchar(5000)

    /********2.变量初始化*********/ set @table_name='mio_log' set @cons_sql='create table '+@table_name+'('

    /********3.取表的id*********/ DECLARE tbl_cursor CURSOR FOR select a.id from sys.sysobjects  a where a.id = object_id(N'[dbo].['+@table_name+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1

    OPEN tbl_cursor FETCH NEXT FROM tbl_cursor INTO @table_id

    /********4.构建表的结构*********/ DECLARE columns_cursor CURSOR FOR SELECT b.column_id,b.name,c.name,b.max_length, b.precision,b.scale,b.is_nullable from sys.columns b,sys.systypes c where b.object_id=@table_id and b.system_type_id=c.xtype order by b.column_id asc

    OPEN columns_cursor

    FETCH NEXT FROM columns_cursor INTO @column_id, @c_name, @c_type, @max_length, @precision, @scale, @is_nullable

    WHILE @@FETCH_STATUS = 0 BEGIN set @cons_sql=@cons_sql+@c_name+' '+ (case when @c_type in('smallint','tinyint') then 'int' when @c_type='int' then 'number' when @c_type ='varchar' then 'varchar2('+convert(varchar(2),@max_length)+')' when @c_type in('datetime','smalldatetime') then 'date' when @c_type='decimal' then 'number'+'('+convert(varchar(1),@precision)+','+convert(varchar(1),@scale)+')' when @c_type='char' then 'char('+convert(varchar(2),@max_length)+')' when @c_type='text' then 'long' --此处有待于进一步数据类型的映射 else '##' end)+ (case when @is_nullable=1 then ' null' else ' not null' end)+',' FETCH NEXT FROM columns_cursor INTO @column_id, @c_name, @c_type, @max_length, @precision, @scale, @is_nullable END

    /********5.输出建表语句*********/ select left(@cons_sql,Len(@cons_sql)-1)+');'

    /********6.释放游标*********/ DEALLOCATE tbl_cursor DEALLOCATE columns_cursor

  • 相关阅读:
    mysqldump备份数据
    windows上mysql5.7服务启动报错
    Java NIO:FileChannel数据传输
    HBase过滤器:SingleColumnValueFilter和FirstKeyOnlyFilter一起使用的问题
    Java自定义注解
    Kafka Connect使用入门-Mysql数据导入到ElasticSearch
    Kafka中使用Avro编码、解码消息
    堆和栈
    Java中基本数据类型byte,short,char,int,long,float,double 取值范围
    对快速排序的一点小探究
  • 原文地址:https://www.cnblogs.com/len0031/p/3914049.html
Copyright © 2020-2023  润新知