通过java导入csv文件到oracle(mysql)数据库

<pre name="code" class="java">上一篇文章讲了如何利用java将oracle(mysql)数据库中的数据导出到csv文件,这篇文章我们将把上篇文章中的csv文件导入到数据库中。
本程序能解决的问题是将csv文件导入数据库,可以将数据库中原记录删除后导入csv文件中的记录,也可以通过建立临时表(原表以"_tmp"结尾)将csv文件中的数据合并到目标表中。
需要注意的是:
csv文件中的日期格式在dateutil.java文件中调整,如果日期格式不对将会设置为计算机起始时间。
csv文件中要有表头,如果没有表头需要人为添加表头(添加表头的代码没有上传);
csv文件可以以逗号结束,也可以不以逗号结束;
本程序的测试方法用到了<span style="font-family: Arial, Helvetica, sans-serif;">guessTableName</span>方法,需要根据个人情况调整。
本程序中用到了将一些特殊字符串替换,可以自己屏蔽掉,不屏蔽也应该不影响。



入库比导出相对麻烦些了。

 
package com.blog.laishaobin.db;

import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.FilenameUtils;

import com.blog.laishaobin.form.CSVImportForm;

public class BlogCSVToTable {
	
	public static void main(String[] args) {
		List<String> lstable = new ArrayList<String>();
		List<CSVImportForm> csvFormList = new ArrayList<CSVImportForm>();
		lstable.add("C:\\Users\\John\\workspace\\blog\\T_TEERIE_FLOW_RELATE_20150523.csv");
		lstable.add("C:\\Users\\John\\workspace\\blog\\T_TEERIE_IDENTIFY_20150523.csv");
		for (String s : lstable) {
			CSVImportForm form = new CSVImportForm(s, CSVImportForm.INSERTTYPE, guessTableName(s));
			csvFormList.add(form);
		}
		try {
			new BlogCSVToTable(csvFormList);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	//根据文件路径获取表名(根据个人情况修改本函数)
	private static String guessTableName(String localFilePath) {
		String tableName = null;
		tableName = FilenameUtils.getBaseName(localFilePath);
		tableName = tableName.substring(0, tableName.length() - 9);
	
		return tableName;
	}
	
	public BlogCSVToTable(List<CSVImportForm> csvFormList) throws Exception {
		for(CSVImportForm c : csvFormList) {
			try {
				if (c.isInsert()) {
					Connection conn = new DBConnections(DBConnections.URL, DBConnections.USERNAME, DBConnections.PASSWORD).getConn();
					CSVLoader csvLoader = new CSVLoader(conn);
					csvLoader.setSeprator(c.getSeprator());
					csvLoader.loadCSV(c.getLocalFilePath(), c.getTableName(), true);
				} else if (c.isUpdate()) {
					Connection conn = new DBConnections(DBConnections.URL, DBConnections.USERNAME, DBConnections.PASSWORD).getConn();
					CSVLoader csvLoader = new CSVLoader(conn);
					csvLoader.setSeprator(c.getSeprator());
					
					csvLoader.loadCSV(c.getLocalFilePath(), getTempTable(c.getTableName()), true);
					conn = new DBConnections(DBConnections.URL, DBConnections.USERNAME, DBConnections.PASSWORD).getConn();
					new MergeInto(getTempTable(c.getTableName()), c.getTableName(), "SYS_SEQ_NO", 
							null, null, conn);
					
				}
			}catch (Exception e) {
				e.printStackTrace();
				throw new Exception(e.getMessage());
			}
		}
	}
	
	private String getTempTable(String tableName) {
		return tableName.toUpperCase() + "_TMP";
	}
}



package com.blog.laishaobin.form;

public class CSVImportForm {
	public static final String INSERTTYPE = "01";
	public static final String UPDATETYPE = "02";
	//文件路径
	String localFilePath;
	//文件分隔符
	char seprator = ',';
	//入库类型
	String sqlType;
	//数据库表名
	Stri
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值