56,678
社区成员
发帖
与我相关
我的任务
分享
package com.common;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
/**
* 读取Oracle中的数据 移植到 MySQL中
*
* @author Alex
*
*/
public class ODataToMData {
public static void main(String[] args) {
try {
for (String tableName : OtoM.tableNames) {
getDataByOracle(tableName);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void getDataByOracle(String table) throws ClassNotFoundException, SQLException {
Connection connection = OracleDriver.getConn();
PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + table,
ResultSet.TYPE_SCROLL_INSENSITIVE , ResultSet.CONCUR_READ_ONLY);
List<Map<String, String>> list = OtoM.getOracleColumns(table);
ResultSet resultSet = statement.executeQuery();
List<String> columns = new ArrayList<>();
for (Map<String, String> map : list) {
columns.add(map.get("columnName"));
}
List<Map<String, String>> dataList = new ArrayList<>();
int cursor = 0;
while (resultSet.next()) {
cursor++;
Map<String, String> singleDataMap = new HashMap<>();
for (String columnName : columns) {
singleDataMap.put(columnName, resultSet.getString(resultSet.findColumn(columnName)));
}
dataList.add(singleDataMap);
if ((cursor!=0&&cursor % 100 == 0)||resultSet.isLast()) {
System.err.println(cursor+"行,开始提交!");
insertDataByMySQL(dataList, table);
dataList.clear();
}
// System.out.println(singleDataMap);
// insertDataByMySQL(singleDataMap, table);
}
// System.out.println(cursor);
}
public static void insertDataByMySQL(List<Map<String, String>> mapList, String table) throws ClassNotFoundException, SQLException {
Connection connection = MySQLDriver.getConn();
StringBuffer buffer = new StringBuffer();
buffer.append("INSERT INTO ");
buffer.append("`");
buffer.append(table);
buffer.append("` (");
for (Entry<String, String> entry : mapList.get(0).entrySet()) {
buffer.append("`");
buffer.append(entry.getKey());
buffer.append("`,");
}
buffer.delete(buffer.length() - 1, buffer.length());
buffer.append(") values ");
for (Map<String, String> map : mapList) {
buffer.append("(");
for (Entry<String, String> entry : map.entrySet()) {
String value = entry.getValue();
if (value == null || value.equals("null")) {
value = "NULL";
buffer.append(value);
}else{
buffer.append("'");
value = value.replace("'", "''");
buffer.append(value);
buffer.append("'");
}
buffer.append(",");
}
buffer.delete(buffer.length() - 1, buffer.length());
buffer.append("),");
}
buffer.delete(buffer.length() - 1, buffer.length());
PreparedStatement statement = connection.prepareStatement(buffer.toString());
int count = statement.executeUpdate();
System.out.println(count);
}
}