|
@ -3,6 +3,7 @@ package com.yihu.util.mysql2Oracle;
|
|
import java.sql.*;
|
|
import java.sql.*;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 查询mysql 导入执行 到oracle
|
|
* 查询mysql 导入执行 到oracle
|
|
@ -12,15 +13,15 @@ public class TranslateMysqlToOracle {
|
|
|
|
|
|
/**
|
|
/**
|
|
* @param tableName
|
|
* @param tableName
|
|
* @param startId
|
|
|
|
* @param page
|
|
|
|
* @param rows
|
|
|
|
|
|
* @param offset
|
|
|
|
* @param pageSize
|
|
* @return
|
|
* @return
|
|
* @throws Exception
|
|
* @throws Exception
|
|
*/
|
|
*/
|
|
public static List<String> exportSql(String tableName, String index, int startId, int page, int rows) throws Exception {
|
|
|
|
|
|
public static Integer exportSql(String tableName, String index, AtomicInteger offset, int pageSize) throws Exception {
|
|
|
|
Integer rowCount = 0;
|
|
|
|
|
|
List<String> sqlList = new ArrayList<>();
|
|
List<String> sqlList = new ArrayList<>();
|
|
// String[] tableNames = tables;
|
|
|
|
String indexName = index;
|
|
String indexName = index;
|
|
|
|
|
|
//TODO 修改链接
|
|
//TODO 修改链接
|
|
@ -31,13 +32,14 @@ public class TranslateMysqlToOracle {
|
|
Class.forName(driver);
|
|
Class.forName(driver);
|
|
Connection connection = DriverManager.getConnection(url, user, password);
|
|
Connection connection = DriverManager.getConnection(url, user, password);
|
|
|
|
|
|
int maxId = startId + (page * rows);
|
|
|
|
String sql = "select * from " + tableName + " where inner_id> " + maxId + " limit " + rows;
|
|
|
|
|
|
String sql = "select * from " + tableName + " where inner_id > " + offset + " limit " + pageSize;
|
|
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
|
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
|
ResultSet resultSet = preparedStatement.executeQuery();
|
|
ResultSet resultSet = preparedStatement.executeQuery();
|
|
ResultSetMetaData metaData = resultSet.getMetaData();
|
|
ResultSetMetaData metaData = resultSet.getMetaData();
|
|
|
|
|
|
while (resultSet.next()) {
|
|
while (resultSet.next()) {
|
|
|
|
rowCount++;
|
|
|
|
|
|
String insertSql = "";
|
|
String insertSql = "";
|
|
if (!indexName.isEmpty()) {
|
|
if (!indexName.isEmpty()) {
|
|
insertSql = "INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(" + tableName + "," + indexName + ")*/ INTO " + tableName + " ";
|
|
insertSql = "INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(" + tableName + "," + indexName + ")*/ INTO " + tableName + " ";
|
|
@ -48,22 +50,24 @@ public class TranslateMysqlToOracle {
|
|
StringBuffer valuesStrBuf = new StringBuffer();
|
|
StringBuffer valuesStrBuf = new StringBuffer();
|
|
for (int i = 1; i <= metaData.getColumnCount(); i++) {
|
|
for (int i = 1; i <= metaData.getColumnCount(); i++) {
|
|
String columnName = metaData.getColumnName(i);
|
|
String columnName = metaData.getColumnName(i);
|
|
if (!"inner_id".equals(columnName)) {
|
|
|
|
String columnTypeName = metaData.getColumnTypeName(i);
|
|
|
|
Object value = resultSet.getObject(i);
|
|
|
|
//System.out.println(columnName + " - " + columnTypeName + " - " + value);
|
|
|
|
|
|
if ("inner_id".equals(columnName)) {
|
|
|
|
|
|
namesStr.append(columnName).append(",");
|
|
|
|
valuesStrBuf = joinValuesFragment(valuesStrBuf, columnTypeName, value);
|
|
|
|
|
|
offset.set(resultSet.getInt(i));
|
|
|
|
continue;
|
|
}
|
|
}
|
|
|
|
String columnTypeName = metaData.getColumnTypeName(i);
|
|
|
|
Object value = resultSet.getObject(i);
|
|
|
|
//System.out.println(columnName + " - " + columnTypeName + " - " + value);
|
|
|
|
|
|
|
|
namesStr.append(columnName).append(",");
|
|
|
|
valuesStrBuf = joinValuesFragment(valuesStrBuf, columnTypeName, value);
|
|
}
|
|
}
|
|
|
|
|
|
String valuesStr = valuesStrBuf.toString();
|
|
String valuesStr = valuesStrBuf.toString();
|
|
namesStr = new StringBuilder(namesStr.substring(0, namesStr.length() - 1));
|
|
namesStr = new StringBuilder(namesStr.substring(0, namesStr.length() - 1));
|
|
valuesStr = valuesStr.substring(0, valuesStr.length() - 1);
|
|
valuesStr = valuesStr.substring(0, valuesStr.length() - 1);
|
|
insertSql += "(" + namesStr + ") VALUES (" + valuesStr + ")";
|
|
insertSql += "(" + namesStr + ") VALUES (" + valuesStr + ")";
|
|
|
|
|
|
// String sqlFilePath = directoryPath + tableName + ".sql";
|
|
|
|
// writeFileContent(sqlFilePath, insertSql);
|
|
|
|
sqlList.add(insertSql);
|
|
sqlList.add(insertSql);
|
|
}
|
|
}
|
|
resultSet.close();
|
|
resultSet.close();
|
|
@ -71,7 +75,8 @@ public class TranslateMysqlToOracle {
|
|
|
|
|
|
connection.close();
|
|
connection.close();
|
|
exportSqlToOracle(sqlList);//执行sql到oracle
|
|
exportSqlToOracle(sqlList);//执行sql到oracle
|
|
return sqlList;
|
|
|
|
|
|
|
|
|
|
return rowCount;
|
|
}
|
|
}
|
|
|
|
|
|
//导入oracle
|
|
//导入oracle
|