把mysql中的数据导入到一个文件中,然后用java代码来读取该文件中的insert语句,并重新导入到新的数据库中。因为新的数据库是在原有的数据库中进行修改了的(如:增加了新表,或对某表的字段进行换位或者是增删等)
首先是先删除新数据库中表的数据。
先读取数据库中的所有表(此部分是采纳了网友的,名称忘了)
1、添加jdbc驱动程序包(mysql-connector-java-5.0.7-bin.jar)
2. 加载并注册驱动程序
Class.forName("com.mysql.jdbc.Driver");
3、创建一个Connection对象
4、我是直接用connection = DBConnectionHelper.getConnection();也可以是原始的DriverManage.getConnection(String userName,String password,String url);
5、创建一个Statement对象或者PreparedStatement对象
Statement stmt = connection.createStatement();
6、执行语句
resultSet = deleteStatement.executeQuery("show tables;");
while(resultSet.next()){
//把数据库中的所有表封装到deleteSqlList中
deleteSqlList.add(resultSet.getString("Tables_in_OA3"));//(处在所有表名的最上面,也即是show tables;的下一行)
}
自此可以把删除语句拼起来。即可进行删除了。
但我用的数据库由于有外键约束,所以不能按照上面方法进行删除。
我自己写了个方法,把表删除的顺序进行调整
private static void adjustTableOrders(String tableName, int index, List<String>deleteSqlList) {
for (int j = 0; j < deleteSqlList.size(); j++) {
if (tableName.equals(deleteSqlList.get(j))) {
//把表名删除之前,先保存下来
String employeeTable = deleteSqlList.get(j);
deleteSqlList.remove(j);
deleteSqlList.add(index, employeeTable);
return;
}
}
}
自此就可以删除数据库所有表的数据信息。