如何用java编程实现将数据从Access数据库导入到Oracle, 求java详细代码和解释!

如何用java编程实现将数据从Access数据库导入到Oracle, 求java详细代码和解释!

0

1个回答

package com.yinhai.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.StringTokenizer;

public class AccessToOracleSql {

// Access的数据源配置 
public static String urlAccess = "jdbc:odbc:jgyl"; 
public static String usrAccess = "admin"; 
public static String pwdAccess = "xxxxx"; 

// Oracle的配置 
public static String urlOracle = "jdbc:oracle:thin:@10.62.xxx.xxx:1521:xxxx2"; 
public static String usrOracle = "chenzw"; 
public static String pwdOracle = "chenzw"; 

// 常量 
public static final int CONNECTION_ORACLE = 1; 
public static final int CONNECTION_ACCESS = 0; 

// access中需要迁移的表名 

 public static String accessTables = "00C'C00^01C'C01^1997C'JF1997^1998C'JF1998^1999C'JF1999^2000C'JF2000^" + 
        "2001年表C'JF2001^2002缴费表'JF2002^2003缴费表'JF2003^2004缴费表'JF2004^2005缴费表'JF2005^2006缴费表'JF2006^" + 
        "2007缴费表'JF2007^2008缴费表'JF2008^2009缴费表'JF2009^2009缴费表(备份)'JF2009BAK^2010缴费表'JF2010^" + 
        "2011缴费表'JF2011^2012缴费表'JF2012^97C'C97^98C'C98^99C'C99^" + 
        "单位表'DANWEIBIAO^缴费转移记录'JFZYJL^失业缴费'SYJF^养老缴费表'YLJF^员工名单'YGMD^粘贴错误'ZTCW^转入人员历史缴费'ZRRYLSJF"; 


// typeAccessToOracle   
public static String typeAccessToOracle = "COUNTER'NUMBER(10)^VARCHAR'VARCHAR2(300)^DOUBLE'NUMBER(10,4)^" 
        + "BIT'NUMBER(4)^REAL'NUMBER(10,4)^INTEGER'NUMBER(10,4)^DATETIME'VARCHAR2(20)"; 

public static Map oracleTableFromAccess; 
// 加载驱动 
static { 
    oracleTableFromAccess = AccessToOracleSql.transStringToMap(accessTables); 
    String driver_Access = "sun.jdbc.odbc.JdbcOdbcDriver"; 
    String driver_Oracle = "oracle.jdbc.driver.OracleDriver"; 
    try { 
        Class.forName(driver_Access); 
        Class.forName(driver_Oracle); 
    } catch (Exception e) { 
        e.printStackTrace(); 
    } 
} 

// 获得连接 
public static Connection getConnection(int connectType) { 
    Connection con = null; 
    try { 
        switch (connectType) { 
        case 0: 
            con = DriverManager.getConnection(urlAccess, usrAccess, 
                    pwdAccess); 
            break; 
        case 1: 
            con = DriverManager.getConnection(urlOracle, usrOracle, 
                    pwdOracle); 
            break; 
        } 
    } catch (Exception e) { 
        e.printStackTrace(); 
    } 
    return con; 
} 

// 得到Oracle的建表语句 
public static Map getOracleSql(ResultSet resultSet, String TableName) { 
    Map resultMap = new HashMap(); 
    Map transColNameMap = new HashMap(); 
    try { 
        Map map = transStringToMap(typeAccessToOracle); 
        StringBuffer sb = new StringBuffer(); 
        ResultSetMetaData meta = resultSet.getMetaData(); 
        sb.append("create table " + TableName + "(\n"); 
        int cols = meta.getColumnCount(); 
        while (resultSet.next()) { 
            for (int i = 1; i <= cols; i++) { 
                String oracleColName = Pinyin4j.getPinYin(alterNameAddQ(meta.getColumnName(i))).replace("(", "").replace(")", "").replace("%", ""); 
                sb.append(" " + oracleColName + " "); 
                sb.append(transType(meta.getColumnTypeName(i))); 
                transColNameMap.put(meta.getColumnName(i),oracleColName); 
                sb.append(i == cols ? "\n" : ",\n"); 
            } 
            break; 
        } 
        sb.append(")"); 
        resultMap.put("oracleSql", sb.toString()); 
        resultMap.put("transColNameMap", transColNameMap); 
        return resultMap; 
    } catch (Exception e) { 
        e.printStackTrace(); 
    } 
    return null; 
} 

// 如果第一个字母为数字的话,则在前面加Q 
public static String alterNameAddQ(String tableName) { 
    String beginChar = tableName.substring(0, 1); 
    if (beginChar.matches("[0-9]")) { 
        return "Q" + tableName; 
    } 
    return tableName; 
} 

// 关闭连接 
public static void close(ResultSet rs, Statement stmt, Connection con) { 
    try { 
        if (rs != null) 
            rs.close(); 
    } catch (Exception ex) { 
        ex.printStackTrace(); 
    } 
    try { 
        if (stmt != null) 
            stmt.close(); 
    } catch (Exception ex) { 
        ex.printStackTrace(); 
    } 
    try { 
        if (con != null) 
            con.close(); 
    } catch (Exception ex) { 
        ex.printStackTrace(); 
    } 
} 

// 转码 
public static String transType(String type) { 
    return (String) transStringToMap(typeAccessToOracle).get(type); 
} 

/**
 * 方法名称:transStringToMap 传入参数:mapString 形如 username'chenziwen^password'1234
 * 返回值:Map
 */ 
public static Map transStringToMap(String mapString) { 
    Map map = new HashMap(); 
    java.util.StringTokenizer items; 
    for (StringTokenizer entrys = new StringTokenizer(mapString, "^"); entrys 
            .hasMoreTokens(); map.put(items.nextToken(), items 
            .hasMoreTokens() ? ((Object) (items.nextToken())) : null)) 
        items = new StringTokenizer(entrys.nextToken(), "'"); 
    return map; 
} 

// 主方法 
public static void main(String[] args) throws Exception { 
    java.util.Map.Entry entry; 
    for(Iterator iterator = oracleTableFromAccess.entrySet().iterator(); iterator.hasNext();){ 
        entry = (java.util.Map.Entry)iterator.next(); 
        String accessTableName = (String)entry.getKey(); 
        String oracleTableName = (String)entry.getValue(); 
        Connection connAccess = getConnection(AccessToOracleSql.CONNECTION_ACCESS); 
        Connection connOracle = getConnection(AccessToOracleSql.CONNECTION_ORACLE); 
        Statement stAccess = connAccess.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 
        ResultSet rsAccess = null; 
        PreparedStatement psOracle = null; 
        String createTableSql = "select * from " + accessTableName; 
        //TODO 删除 
        System.out.println("查询Access表:"+createTableSql); 
        String dropTableSql = "drop table "+ oracleTableName; 
        rsAccess = stAccess.executeQuery(createTableSql); 
        Map map = getOracleSql(rsAccess, oracleTableName); 
        //TODO 删除 
        System.out.println("删除Oracle的表:"+dropTableSql); 
        psOracle = connOracle.prepareStatement(dropTableSql); 
        try { 
            psOracle.execute(); 
        } catch (Exception e) { 
            System.out.println("异常错误:"+e.getMessage()); 
        } 
        psOracle = connOracle.prepareStatement((String) map.get("oracleSql")); 
        psOracle.execute(); 
        Map transColNameMap = (Map)map.get("transColNameMap"); 
        // 循环结果集,将数据插入到Oracle中 
        ResultSetMetaData meta = rsAccess.getMetaData(); 
        int cols = meta.getColumnCount(); 
        while (rsAccess.next()) { 
            StringBuffer sbBeginHalf = new StringBuffer(); 
            StringBuffer sbEndHalf = new StringBuffer(); 
            sbBeginHalf.append("insert into " + oracleTableName + "("); 
            for (int j = 1; j <= cols; j++) { 
                sbBeginHalf.append((String)transColNameMap.get(meta.getColumnName(j))); 
                sbBeginHalf.append(j<cols?",":""); 
                if(("VARCHAR".equals(meta.getColumnTypeName(j))||"DATETIME".equals(meta.getColumnTypeName(j)))&&null!=rsAccess.getString(j)){ 
                    sbEndHalf.append("'"+rsAccess.getString(j)+"'"); 
                }else{ 
                    sbEndHalf.append(rsAccess.getString(j)); 
                }  www.2cto.com
                sbEndHalf.append(j<cols?",":""); 
            } 
            sbBeginHalf.append(") values ("); 
            sbEndHalf.append(")"); 
            String insertSql = sbBeginHalf.append(sbEndHalf.toString()).toString(); 
            psOracle = connOracle.prepareStatement(insertSql); 
            psOracle.execute(); 
        } 
        //TODO 删除 
        System.out.println("插入oracle的表数据:"+oracleTableName); 
        // 关闭连接 
        close(rsAccess, stAccess, connAccess); 
        close(null, psOracle, connOracle); 
    } 
} 

}

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于将数据从Oracle数据库通过程序导入到access数据库
其中有一种比较理想的方法是将数据筛选出来之后,存入Oracle数据库的临时表里,然后再将这张临时表整个查出来,for循环一行进行对access数据库的插入。方便了很多,不再需要在后台进行大量的循环操作。代码如下: Procedure DC_Select_DZSJ  (     p_errorCode out number--错误代码  ) is  begin  p_errorCode
access数据库数据导入oracle数据库
1.在access数据库驻留的机器上安装oracle client. 2.使用netmanager配置oracle服务名. 3.在access数据库驻留的机器上创建dsn,连接oracle数据库(使用第2步配置的服务名,驱动程序选择oracle in oraclient10g_home*). 4.打开access,选择文件--&gt;获取外部数据--&gt;联接表--&gt;odbc数据库(),选择第3步创建...
Java代码实现excel数据导入到Oracle
1.首先需要两个jar包jxl.jar,ojdbc.jar(注意版本,版本不合适会报版本错误)2.代码: import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import jxl.Cell; import jxl.Shee...
java代码实现excel数据导入数据库
1、添加POI jar包到项目的lib目录下­ 2、Excel文件目录:d://excel.xls­ 3、数据库字段为:num1 num2 num3 num4 num5 num6­ 4、数据库名:blog­ 5、表名:test­ 6、编写类:连接mysql的字符串方法、插入的方法、实体类­­ import java.io.FileInputStream;­ import java.io
Access数据库数据转存到MySql数据库中
目录 一、Navicat自带导入Access(*.mdb)数据的方式 二、借助ODBC当然Access数据 1. 建立ODBC数据源 2. 通过Navicat导入数据 3. 添加键等 使用Navicat 8 for MySql来导入数据,Access是2003版本的,当前office是2017版本,odbc是window10版本的。 一、Navicat自带导入Access(*.mdb...
数据从Oracle数据库导入到MongoDB数据库中出现的一些问题,jar包的正确运行
集群搭建好了,片键也设置好了,接下来就是写导入的代码来进行数据的迁移 思路:因为其中有6个表,所需要导入的数据量是200G,400G......数据量太大,所以需要将导入数据的代码打成jar包,然后放在不同机器上运行,前提:代码里设置了args[]手动输入参数的判断,进而判断是哪一张表,应该对哪一张表进行操作,部分代码如下: if (args[0].equalsIgnoreCase("wnjd
使用JDBC将数据从Oracle导入到HDFS中
从Oracle导入数据到HDFS中最常见的方式就是利用sqoop,但是使用sqoop是有一些前提要求的,当我们因为某些原因不能使用sqoop时,就应该考虑其他的方式了,比如java中最常用的jdbc。本文就是我以一个编程新手的身份处理这个需求的全部过程及体会,其中还会包含一些作为新手初次使用maven构建遇到的问题以及从mysql到oracle的不适应导致的一些问题等等。 首先,在网上查了一些资料...
通过Sqoop工具将Oracle数据库中的表数据导入到Hive的过程
Sqoop是一款开源的工具主要用于在Hadoop(Hive,HBasw)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 将各种关系型数据导入Hive中,其实大同小异,这里就以Oracle数据为例
C# access数据库导入Mysql
由于个人需要,需要从access数据库内的数据导入到Mysql,而且不想通过人工操作完成,所以写了一个插件。记录于此,草稿使用。(有些乱) OleDbConnection con = new OleDbConnection(); try { //SaveFileDialog saveFile = new SaveFil...
Hive数据导入到Oracle数据库的操作方法
具体操作步骤如下: --1.创建测试表 create table test0825(id int, name string) row format delimited fields terminated by ',' stored as textfile; --2.创建测试文件test0825.txt 1,test01 2,test02 3,test03 4,test04
Oracle海量数据导入MongoDB 采用JAVA反射-Penghao
Oracle海量数据导入MongoDB
QT将Excel表导入到access数据库
需求,将excel表格信息导入到Access数据库 QString m_file =QFileDialog::getOpenFileName(this, &quot;打开&quot;, QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation), &quot;表格文件( *.xls)&quot;); if(UIDemo01::getFromExcel(...
大数据:通过Kettle把传统数据库数据导入到Hive中
自从使用了Kettle工具之后,越来越发现她的强大,上篇文章主要介绍通过Kettle工具在传统数据库之间迁移数据,但很多业务场景是需要放到大数据上去的,如何通过Kettle工具把传统数据库中数据导入到Hive中,这是本文要详细讲解的。 一、准备 系统 版本 本地操作系统 Windows 10 pro ETL工具 Kettle 7.0.0 数据库 SQL Server 200...
Java实现Excel导入数据库
用Java实现将Excel中的记录入库Excel Oracle数据库 整个过程前台form表单提交 -> url拦截 -> 传到后台的servlet -> 后台首先将Excel传到服务器(假设有)的某个路径 -> 然后将Excel分条解析到List里面 -> 将List记录放入Map ->批量方法传到数据库废话不多说,上代码讲解:1 上传Excel到服务器某个路径这里注意一点: 前台form表
EXCEL数据导入到Oracle数据库中
在做项目的同时,新系统需要导入大量的数据,除了库对库的方式以外,在有些时候可能用户也会提供一些EXCEL表格数据,需要手动导入到系统中,EXCEL的数据可能少则几条,多则上千条。有以下几种方法: 1,通过PLSQL手动复制粘贴到ORACLE数据表中; 2,使用EXCEL批量制作SQL脚本,然后拿到数据库中执行; 3,使用PLSQL工具导入; 4,通过JAVA代码编程的方式解析EXCEL...
Access数据库数据表导入到mysql数据库流程
我这边使用的是SQLyog企业版,本教程以该工具为蓝本进行描述。其他mysql可视化工具实现该需求的方式大同小异。1.使用mysql数据可视化工具连接并打开mysql数据库 2.新建一个数据库用来保存从Access数据库导出的数据表及表里的数据 根据图中的标准进行输入和选择后,点击创建按钮,就会创建数据库Test 3.右键你要导入的数据库,导入—>导入外部数据库—->下一步。
C#将Excel导入到Access数据库表(winForm版)
C#将Excel导入到Access数据库表(winForm版)
java txt导入oracle数据库 date处理
1. 自己太菜,基本的东西搞的自己团团转,谨记。 原因: 在导入txt到表中,一直提示不对应。经过百度,是因为oracle数据库的date在存储的时候需要格式化一下。
图解运用PLSQL工具导入Excel数据
如何用PL/SQL将EXCEL数据导入到ORACLE数据库中
将Oracle 数据库数据导入mySQL
Oracle数据库数据 导入 mysql 数据库
Python操作Excel表格并将其中部分数据写入到Access数据库
该脚本的开发背景源于琐碎的需要手动记录的学籍信息采集工作。具体功能主要是通过Python脚本语言读取Excel中的数据然后将其存入Access数据库中。
从Oracle数据库中导入数据到Hive中的脚本
从Oracle数据库中导入数据到Hive中的脚本
将mysql数据库数据导入到oracle数据库中
转载 http://www.cnblogs.com/xusweeter/p/6512521.html
Oracle 将服务器上的数据保存到本地,将本地数据导入到数据库
在cmd命令行窗口中 执行以下命令exp username/password@&quot;库的位置&quot; file=F:\abc.dmp(本地磁盘 )owner=username
图解把SQLServer数据导入Access
超级详细的介绍把SQLServer数据导入Access的步骤,因为博客显示不了这些图片,所以以文档的方式上传资源。应该可以帮到大家。
Sqoop导入Oracle数据表到HDFS
1、问题 [root@node1 sqoop-1.4.7]# bin/sqoop import --connect jdbc:oracle:thin:@192.168.1.100:1521:TPADC --username test --password test --table fund_info -m 1; Warning: /opt/sqoop-1.4.7/bin/../../hbase...
JAVA实现Excel表数据导入ORACLE数据库
JAVA实现Excel表数据导入ORACLE数据库,完整的例子,不过需要导入相关的包哦
用spark从oracle导入数据到hive
大概步骤: 连接oracle,创建一个dataframe用来接收从oracle里面读取的数据。 将dataframe的数据写入临时表。 用hiveContext.sql语句将数据写入hive里面。 这个程序其实对于学了spark的人来说很简单,直接上代码吧: package com.ctbri.cgs.oracle2Hive import org.apache.spa...
Oracle数据导入到Hive数据库的操作方法
具体操作步骤如下: --1.在Oracle数据库创建表,并添加测试数据 create table test0825(name varchar2(20)); insert into test0825(name) values('6,test06'); insert into test0825(name) values('7,test07'); commit; --2.在Hive中创建
JDBC实现从Hive抽取数据导入Oracle
环境:浙江移动华为云平台 云平台大数据采用了 Kerberos 认证。 开发历程: 1、在宁波大数据实验环境测试通过了JDBC实现从Hive抽取数据导入Oracle功能。 2、通过查看其它项目的数据库访问配置,知道了云平台上的oracle配置。 3、获取hive的jdbc访问配置。但是无人知道,说保密不告知。 但是方法还是有的,从访问前source的shell文件里,找到了眉目。
logstash5.6.1向es导入oracle数据库数据
资源主要能用于使用logstash将oracle数据导入到es中,logstash的版本为5.6.1
java进行excel数据导入数据库 (代码)
博主自己写的微信支付,里面有源码有兴趣的可以看一下 https://blog.csdn.net/weixin_39592397/article/details/85242287 excel导入导出网上参考了一些代码感觉写的都比较复杂,就自己看了一下poi的api自己封装了一段代码(如下) 目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和JavaExcel...
使用poi实现Excel导入功能,数据库基于oracle(上)
首先说下采用poi实现导入Excel的实现思路(如果有更好的思路,欢迎跟我探讨。) 1、首先是JSP的编写://读取后,插入数据库 返回String类型结果 @RequestMapping(value = "importExcel", method = RequestMethod.POST) @ResponseBody public void importExcel(Htt
用java编程将txt文件数据导入oracle
工作中有很多数据以txt方式存储,需要导入oracle数据库处理(方便进行计算、统计),因文件较多,不便于手工处理,所以编写此程序以便进行数据导入。已经测试过,可以将数据导入oracle。
Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase
import :Import a table from a database to HDFS          sqoop import 的本质是:就是MR程序 导入数据到HDFS         (1)把Oracle中的EMP表 导入到HDFS中 [root@bigdata11 conf]# sqoop import --connect jdbc:oracle:thin:@192.168.100...
把mongodb当中的数据导入到MySQL
1.首先把mongodb当中的数据导入到csv文件当中 mongoexport -d job -c job -f job_detail,address,education,work_years,company_name,city,min_salary,max_salary --csv -o ~/new.csv 2./usr/local/mongodb/bin/mongoexport -h ip(...
Labview处理Excel表到Access数据库
工作中偶尔用到从Excel导入Access数据库。大概工作流程是首先清空数据库表格,然后打开通过ActiveX打开Excel表格获取数据,根据内容逐行存储至数据库。实际操作中遇到两个问题,首先是清空数据库,使用DELETE指令删除表,实际应用可以删除,需要等待几秒的时间。如果使用删除条件语句会快很多,添加关键字,添加的关键字删除。实际应用效果可以接受,处理时间可以忽略。第二个问题是从表格获取数据后...
JAVA接口将从MySql查出的大量数据导入到Elasticsearch中实现类
通过JAVA API 用BulkRequestBuilder 导入从MySql查出的大量数据至ElasticSearch
java实现oracle和sqlserver数据库转换(包含大数据)
原文:java实现oracle和sqlserver数据库转换(包含大数据) 源代码下载地址:http://www.zuidaima.com/share/1889755593444352.htm 原文:java实现oracle和sqlserver数据库转换(包含大数据) 源代码下载地址:http://www.zuidaima.com/share/188975559344
C#将txt内容导入access数据库
C#将txt内容导入access数据库。数据库建有4个字段,所以txt必须4列,列之间用tab键分隔,也可修改为其他键分隔。两种连接字符串,可连接mdb或accdb类型数据库