临时
import java.sql.*;
public class TableConverterDemo {
public static void main(String[] args) {
String mysqlUrl = "jdbc:mysql://localhost:3306/source_db";
String mysqlUser = "mysql_user";
String mysqlPassword = "mysql_password";
String oracleUrl = "jdbc:oracle:thin:@localhost:1521:xe";
String oracleUser = "oracle_user";
String oraclePassword = "oracle_password";
String sourceTableName = "source_table";
String targetTableName = "target_table";
try (
Connection mysqlConnection = DriverManager.getConnection(mysqlUrl, mysqlUser, mysqlPassword);
Connection oracleConnection = DriverManager.getConnection(oracleUrl, oracleUser, oraclePassword);
Statement mysqlStatement = mysqlConnection.createStatement();
ResultSet mysqlResultSet = mysqlStatement.executeQuery("DESCRIBE " + sourceTableName);
Statement oracleStatement = oracleConnection.createStatement();
) {
// Create the new table in Oracle using the retrieved information from MySQL
StringBuilder createTableQuery = new StringBuilder("CREATE TABLE ");
createTableQuery.append(targetTableName).append(" (");
while (mysqlResultSet.next()) {
String columnName = mysqlResultSet.getString("Field");
String columnType = mysqlResultSet.getString("Type");
// Map MySQL data types to Oracle data types (This is a simple mapping, you may need more complex mappings)
String oracleColumnType = mapToOracleDataType(columnType);
createTableQuery.append(columnName).append(" ").append(oracleColumnType).append(",");
}
createTableQuery.deleteCharAt(createTableQuery.length() - 1); // Remove the last comma
createTableQuery.append(")");
oracleStatement.executeUpdate(createTableQuery.toString());
System.out.println("Table created in Oracle: " + targetTableName);
} catch (SQLException e) {
e.printStackTrace();
}
}
private static String mapToOracleDataType(String mysqlDataType) {
// This is a simple mapping, you may need to handle other data types as well
if (mysqlDataType.contains("varchar")) {
return "VARCHAR2(255)"; // Assuming varchar length is 255 in Oracle
} else if (mysqlDataType.contains("int")) {
return "NUMBER";
} else if (mysqlDataType.contains("decimal")) {
return "NUMBER";
} else if (mysqlDataType.contains("datetime")) {
return "TIMESTAMP";
} else {
return "VARCHAR2(255)"; // Default to VARCHAR2
}
}
}