package com.test.util;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.*;
public class ExportData {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "password";
String outputFolder = "D:\\backups\\";
String query = "SHOW TABLES";
try (Connection con = DriverManager.getConnection(url, user, password);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query)) {
while (rs.next()) {
String tableName = rs.getString(1);
System.out.println(tableName);
String sql = generateTableSQL(con, tableName);
writeToFile(outputFolder + tableName + ".sql", sql);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private static String generateTableSQL(Connection conn, String tableName) throws SQLException {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM " + tableName);
StringBuilder sb = new StringBuilder();
sb.append("DROP TABLE IF EXISTS " + tableName + ";\n");
sb.append("CREATE TABLE " + tableName + " (\n");
int columnCount = rs.getMetaData().getColumnCount();
for (int i = 1; i <= columnCount; i++) {
String columnName = rs.getMetaData().getColumnName(i);
String columnType = rs.getMetaData().getColumnTypeName(i);
sb.append(" " + columnName + " " + columnType);
if (i < columnCount) {
sb.append(",");
}
sb.append("\n");
}
sb.append(");\n");
while (rs.next()) {
sb.append("INSERT INTO " + tableName + " VALUES (");
for (int i = 1; i <= columnCount; i++) {
Object value = rs.getObject(i);
if (value == null) {
sb.append("NULL");
} else if (value instanceof Number) {
sb.append(value);
} else {
sb.append("'" + value.toString().replaceAll("'", "''") + "'");
}
if (i < columnCount) {
sb.append(",");
}
}
sb.append(");\n");
}
rs.close();
stmt.close();
return sb.toString();
}
private static void writeToFile(String fileName, String content) {
try {
FileWriter writer = new FileWriter(new File(fileName));
writer.write(content);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
03-24
2643