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

利用ODBC从SQLServer向Oracle中导数据的更多相关文章

  1. 利用Kettle进行SQLServer与Oracle之间的数据迁移实践

    Kettle简介 Kettle(网地址为http://kettle.pentaho.org/)是一款国外开源的ETL工具,纯java编写,可以在Windows.Linux.Unix上运行,数据抽取高效 ...

  2. SQLServer与Oracle的数据同步(触发器trigger)

    说到同步,其实是靠"作业"定时调度存储过程来操作数据,增,删,改,全在里面,结合触发器,游标来实现,关于作业调度,使用了5秒运行一次来实行"秒级作业",这样基本 ...

  3. 利用jdbc处理oracle大数据---大文件和二进制文件

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  4. 针对各主流数据mysql、sqlserver、oracle中文乱码问题。

    针对各主流数据mysql.sqlserver.oracle当以编码格式gbk存放数据时,要注意字符串类型的字段,要采用宽字符串nvarchar存放,前提是当你的应用程序是utf8编码,而数据库是gbk ...

  5. spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置

    spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置 jdbc.properties 文件信息如下: ---------- ...

  6. c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)

    这篇文章主要介绍了c#几种数据库的大数据批量插入(SqlServer.Oracle.SQLite和MySql),需要的朋友可以了解一下. 在之前只知道SqlServer支持数据批量插入,殊不知道Ora ...

  7. 使用odbc从notes中导数据,配置odbc时报错

    上次在配置odbc从notes中导数据时一直报错(忘记是什么错误了),后来,尝试着把notes和notesSQL的路径加入到path中就OK了!

  8. 数据库多行数据合并一行(sqlserver、Oracle、Mysql)

    我们日常查询数据时,经常会有将查询到的数据按照某一列分组显示(合并多行数据),比如: 表结构: ),coursename )); 需要将以上数据按照用户名分组,所选课程列不同项之间用逗号隔开,在一行中 ...

  9. 异构关系数据库(Sqlserver与Oracle)之间的数据类型转换参考

    一.Oracle到SqlServer的数据类型的转变 编号 Oracle ToSqlServer SqlServer 1 BINARY_DOUBLE VARCHAR(100) real 2 BINAR ...

随机推荐

  1. lazyload懒加载的使用

    1.引用<script src="http://a.tbcdn.cn/apps/baron/js/??lib/tmm/tmm.js,lib/lazyload/lazyload.js?2 ...

  2. Android简单登陆页面

    布局: 线性布局+相对布局 日志打印: 利用LogCat和System.out.println打印观察. Onclick事件是采用过的第四种: 在配置文件中给Button添加点击时间 涉及知识: 通过 ...

  3. Linux中变量#,@,0,1,2,*,$$,$?的含义

    $# 是传给脚本的参数个数 $ 是脚本本身的名字 $ 是传递给该shell脚本的第一个参数 $ 是传递给该shell脚本的第二个参数 $@ 是传给脚本的所有参数的列表 $* 是以一个单字符串显示所有向 ...

  4. 进程&线程

    进程与线程的区别 什么是进程(Process):普通的解释就是,进程是程序的一次执行,而什么是线程(Thread),线程可以理解为进程中的执行的一段程序片段.在一个多任务环境中下面的概念可以帮助我们理 ...

  5. [转载] 高流量大并发Linux TCP 性能调优

    原文: http://cenwj.com/2015/2/25/19 本文参考文章为: 优化Linux下的内核TCP参数来提高服务器负载能力 Linux Tuning 本文所面对的情况为: 高并发数 高 ...

  6. js 返回上一页

    --------2016-6-14 16:37:30-- source:[1]js返回上一页

  7. caffe的data_reader.cpp分析一下干了点什么

    首先说明:下面的内容不一定对 类body: 变量:LayerParameter param_ :它里面放的是:body传进来的layerparameter的参数: BlockingQueue<s ...

  8. 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习

    下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...

  9. go中间的&和*

    package main import "fmt" func main() { var a int = 1 var b *int = &a var c **int = &a ...

  10. h5 input file ajax实现文件上传

    <input type="file" accept="image/*" height="0" class="file_inp ...