实现sql语句插⼊功能
今天碰到数据库迁移的问题,从mysql数据库迁移到db2数据库,⾸先尝试了 ibm 的ibm_mtk_V2_win进⾏数据迁移,但是狗⾎的出现了很多问题(这个只⽀持java6,版本太⾼记得换回来) 后来想到了写脚本(主要是⼀个sql有⼀两百兆的数据,复制粘贴执⾏不可⾏)
java 编写
package com.hsm.db;
import java.io.*;
import java.sql.*;
/**
* 读取指定⽂件下sql脚本,执⾏到数据库
* 朱⾏读取分批处理批量插⼊数据库
*/
public class TestReadFile {
public static void main(String[] args) {
long start = System.currentTimeMillis();
String path = "C:\\Users\\huangsm@allinfinance\\Desktop\\tm_account.sql";
getData(path);
}
private static void getData(String path) {
//读取⽂件
BufferedReader reader;
Connection conn = null;
Statement pst = null;
try {
Class.forName("com.ibm.db2.jcc.DB2Driver");
conn = Connection(
"jdbc:db2://10.250.1.211:50000/zyjr:currentSchema=C;","zyjr","zyjr");
System.out.println("数据库连接成功");
pst = ateStatement();
reader = new BufferedReader(new InputStreamReader(new FileInputStream(path), "UTF-8"));
String line;
int i = 0;
while ((line = adLine()) != null) {
//主要防⽌空⾏问题,个⼈觉得这样⽐简单
if(line.length()<=10){
continue;
}
if(i==0){
//这个执⾏的时候发现的问题,不知道为什么,⽤这个测试
System.out.println(line);
}else{
System.out.println(line);
}
if (i % 100 == 0) {
System.out.println("执⾏了:" + i);
}
i += 1;
}
reader.close();
// 执⾏批量更新
} catch (Exception e) {
e.printStackTrace();
e.printStackTrace();
} finally {
try {
if (pst != null) {
pst.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
写完之后被⼀个家伙说,这样写数据库插⼊太慢了,我就呵呵了,毕竟花了这么长时间,最好告诉我可以写sh脚本,⽽且还提供了sh脚本案例,我就开⼼的换了⼀个⽅式.(⼯作就是好,可以互相的交流)
sh 脚本实现
#!/bin/sh
echo "--------------------------------- cts数据初始化 START----------------------------"批量更新sql语句
db2 connect to zyjrdb user zyjrusr using zyjrusr
db2 set schema=CTS
#插⼊数据
#db2 -tvf tm_account.sql
db2 -tvf tm_address.sql
db2 -tvf tm_card.sql
db2 -tvf tm_contact_tel.sql
db2 -tvf tm_contract.sql
db2 -tvf tm_customer.sql
db2 -tvf tm_repayment.sql
#db2 -tvf tm_period.sql
db2 connect reset
echo "--------------------------------- cts 数据初始化 END ----------------------------"
这个脚本很简单,主要就是把数据执⾏写在了⼀起,还有执⾏脚本的时候⼀定要让脚本具有可执⾏权限,语句为
chmod +x fielname #具体细节可以看书
这个时候想起了⼀句话:⼊了⾏,什么都简单了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论