mysql和postgresql数据库间的数据迁移(注释迁移)
2017-12-08 15:33
447 查看
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
public class Test {
//---------------------------------------读取数据-------------------------------------
public static void main(String[] args) throws Exception {
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
PreparedStatement pre1 = null;// 创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;// 创建一个结果集对象
ResultSet result1 = null;// 创建一个表名结果集对象
try {
Class.forName("com.mysql.jdbc.Driver");// 加载mysql驱动程序
System.out.println("开始尝试连接mydatabase数据库!");
String url = "jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf8";
String user = "root";// 用户名,系统默认的账户名
String password = "123456";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);
//con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase","root","123456");// 获取连接
System.out.println("输入数据库--mydatabase--连接成功!");
//--------------------查看表名-----------------------------------------****1改库名*****---------
String sql1 = "select table_name from information_schema.tables where table_schema='"
+ "pdl_warehouse1" //***********************1改输入库名***************************
+ "'";
pre1 = con.prepareStatement(sql1);
result1 = pre1.executeQuery();// 执行查询,注意括号中不需要再加参数
//--------------------查看列名/类型/注释--------------------------------------------------
while(result1.next()) {
System.out.println("------------进入库中表:"+result1.getString("table_name"));
//---------------------------mysql输入所需字段------------------------------
/*String sql = "select column_name,column_comment,column_type from information_schema.columns where table_schema='mydatabase' and table_name='"
+ result1.getString("table_name")
+ "'";// 预编译语句
*/
//---------------------------postgresql输入所需字段------------------------------
String sql = "select column_name,column_comment from information_schema.columns where table_schema='"
+ "pdl_warehouse1" //**********************2改输入库名************************
+ "' and table_name='"
+ result1.getString("table_name")
+ "'";// 预编译语句
pre = con.prepareStatement(sql);// 实例化预编译语句
result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
System.out.println("结果集result="+result+"结果集result="+result1);
importData(result1,result);//进入更新
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result1 != null)
result1.close();
if (result != null)
result.close();
if (pre1 != null)
pre1.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("输入数据库--mydatabase--数据库连接已关闭!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
//-------------------------------------------更新数据-------------------------------------
public static String importData(ResultSet result1,ResultSet result) {
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
PreparedStatement pre1 = null;// 创建预编译语句对象,一般都是用这个而不用Statement
try {
//--------------------mysql-------------------
/*Class.forName("com.mysql.jdbc.Driver");// 加载mysql驱动程序
System.out.println("开始尝试连接testdb数据库!");
String url = "jdbc:mysql://localhost:3306/testdb?useUnicode=true&
a4d5
amp;characterEncoding=utf8";
String user = "root";// 用户名,系统默认的账户名
String password = "123456";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("testdb连接成功!");*/
//-------------------postgresql---------------
Class.forName("org.postgresql.Driver");// 加载postgresql驱动程序
System.out.println("开始尝试连接test数据库!");
String url = "jdbc:postgresql://101.201.144.119:8765/dw?useUnicode=true&characterEncoding=utf8";
String user = "etl_user";// 用户名,系统默认的账户名
String password = "temp4you";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("dw连接成功!");
int num = 0;//统计数据个数
while(result.next()) {
// System.out.println("表名:"+result1.getString("table_name")+"字段名:"+result.getString("column_name")+",字段类型:"+result.getString("column_type")+",字段注释:"+result.getString("column_comment"));
System.out.println("表名:"+result1.getString("table_name")+"字段名:"+result.getString("column_name")+",字段注释:"+result.getString("column_comment"));
//-------------------------更新mysql库中表注释-------------------------
/* String sql = "ALTER TABLE "
+ result1.getString("table_name")
+ " MODIFY COLUMN "
+result.getString("column_name")
+" "
+result.getString("column_type")
+" COMMENT "
+"'"
+result.getString("column_comment")
+"'"; // 预编译语句
*/
//--------------------更新postgresql库中表注释------------------
//comment on column test.test.name is 'hahaname';
ResultSet rs = con.getMetaData().getTables(null, null, result1.getString("table_name"), null);
if(rs.next() ) { //判断库中是否存在某表
String sql = "comment on column "
+"dw1." //**************************************3改输出库名*****************************
+result1.getString("table_name")
+"."
+result.getString("column_name")
+" is '"
+result.getString("column_comment")
+"'";
pre = con.prepareStatement(sql);// 实例化预编译语句
pre.execute();
pre.close();
num = num + 1;
System.out.println("更新成功第" + (num) + "条数据");
//==========================日志管理==============================
Timestamp currentTime= new Timestamp(System.currentTimeMillis());
System.out.println("=========================="+currentTime);
String sql1 = "insert into test.message values('"
+result1.getString("table_name")
+"','"
+result.getString("column_name")
+"','"
+result.getString("column_comment")
+"','"
+currentTime
+ "')";
pre1 = con.prepareStatement(sql1);// 实例化预编译语句
pre1.execute();
pre1.close();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("dw数据库连接已关闭!");
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
public class Test {
//---------------------------------------读取数据-------------------------------------
public static void main(String[] args) throws Exception {
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
PreparedStatement pre1 = null;// 创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;// 创建一个结果集对象
ResultSet result1 = null;// 创建一个表名结果集对象
try {
Class.forName("com.mysql.jdbc.Driver");// 加载mysql驱动程序
System.out.println("开始尝试连接mydatabase数据库!");
String url = "jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf8";
String user = "root";// 用户名,系统默认的账户名
String password = "123456";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);
//con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase","root","123456");// 获取连接
System.out.println("输入数据库--mydatabase--连接成功!");
//--------------------查看表名-----------------------------------------****1改库名*****---------
String sql1 = "select table_name from information_schema.tables where table_schema='"
+ "pdl_warehouse1" //***********************1改输入库名***************************
+ "'";
pre1 = con.prepareStatement(sql1);
result1 = pre1.executeQuery();// 执行查询,注意括号中不需要再加参数
//--------------------查看列名/类型/注释--------------------------------------------------
while(result1.next()) {
System.out.println("------------进入库中表:"+result1.getString("table_name"));
//---------------------------mysql输入所需字段------------------------------
/*String sql = "select column_name,column_comment,column_type from information_schema.columns where table_schema='mydatabase' and table_name='"
+ result1.getString("table_name")
+ "'";// 预编译语句
*/
//---------------------------postgresql输入所需字段------------------------------
String sql = "select column_name,column_comment from information_schema.columns where table_schema='"
+ "pdl_warehouse1" //**********************2改输入库名************************
+ "' and table_name='"
+ result1.getString("table_name")
+ "'";// 预编译语句
pre = con.prepareStatement(sql);// 实例化预编译语句
result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
System.out.println("结果集result="+result+"结果集result="+result1);
importData(result1,result);//进入更新
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result1 != null)
result1.close();
if (result != null)
result.close();
if (pre1 != null)
pre1.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("输入数据库--mydatabase--数据库连接已关闭!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
//-------------------------------------------更新数据-------------------------------------
public static String importData(ResultSet result1,ResultSet result) {
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
PreparedStatement pre1 = null;// 创建预编译语句对象,一般都是用这个而不用Statement
try {
//--------------------mysql-------------------
/*Class.forName("com.mysql.jdbc.Driver");// 加载mysql驱动程序
System.out.println("开始尝试连接testdb数据库!");
String url = "jdbc:mysql://localhost:3306/testdb?useUnicode=true&
a4d5
amp;characterEncoding=utf8";
String user = "root";// 用户名,系统默认的账户名
String password = "123456";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("testdb连接成功!");*/
//-------------------postgresql---------------
Class.forName("org.postgresql.Driver");// 加载postgresql驱动程序
System.out.println("开始尝试连接test数据库!");
String url = "jdbc:postgresql://101.201.144.119:8765/dw?useUnicode=true&characterEncoding=utf8";
String user = "etl_user";// 用户名,系统默认的账户名
String password = "temp4you";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("dw连接成功!");
int num = 0;//统计数据个数
while(result.next()) {
// System.out.println("表名:"+result1.getString("table_name")+"字段名:"+result.getString("column_name")+",字段类型:"+result.getString("column_type")+",字段注释:"+result.getString("column_comment"));
System.out.println("表名:"+result1.getString("table_name")+"字段名:"+result.getString("column_name")+",字段注释:"+result.getString("column_comment"));
//-------------------------更新mysql库中表注释-------------------------
/* String sql = "ALTER TABLE "
+ result1.getString("table_name")
+ " MODIFY COLUMN "
+result.getString("column_name")
+" "
+result.getString("column_type")
+" COMMENT "
+"'"
+result.getString("column_comment")
+"'"; // 预编译语句
*/
//--------------------更新postgresql库中表注释------------------
//comment on column test.test.name is 'hahaname';
ResultSet rs = con.getMetaData().getTables(null, null, result1.getString("table_name"), null);
if(rs.next() ) { //判断库中是否存在某表
String sql = "comment on column "
+"dw1." //**************************************3改输出库名*****************************
+result1.getString("table_name")
+"."
+result.getString("column_name")
+" is '"
+result.getString("column_comment")
+"'";
pre = con.prepareStatement(sql);// 实例化预编译语句
pre.execute();
pre.close();
num = num + 1;
System.out.println("更新成功第" + (num) + "条数据");
//==========================日志管理==============================
Timestamp currentTime= new Timestamp(System.currentTimeMillis());
System.out.println("=========================="+currentTime);
String sql1 = "insert into test.message values('"
+result1.getString("table_name")
+"','"
+result.getString("column_name")
+"','"
+result.getString("column_comment")
+"','"
+currentTime
+ "')";
pre1 = con.prepareStatement(sql1);// 实例化预编译语句
pre1.execute();
pre1.close();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("dw数据库连接已关闭!");
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
}
相关文章推荐
- 将MySQL数据迁移到PostgreSQL的工具 - mysql2psql
- mysql 数据库数据迁移 The user specified as a definer ('root'@'%') does not exist 解决方法
- 一款Hadoop(Hive)与传统的RDBMS数据库(oracle、mysql、postgresql...)间进行数据传递的工具
- InterBase数据库迁移到MySQL(数据导入)
- 将数据(数据库对象 和 表中数据)从 mysql 迁移到sql server 的实际样例
- mysql 通过拷贝数据文件的方式进行数据库迁移实例
- mysql通过拷贝数据文件的方式进行数据库迁移
- mysql-to-postgresql数据库迁移
- MySQL 数据(数据库)迁移
- InterBase数据库迁移到MySQL(数据导出)
- mysql通过拷贝数据文件方式迁移数据库
- mysql 通过拷贝数据文件的方式进行数据库迁移实例
- mysql通过拷贝数据文件的方式进行数据库迁移
- 将Django使用的数据库从MySQL迁移到PostgreSQL的教程
- mysql 数据字典(方便查看数据库表的字段与注释)
- 数据迁移,Oracle,Mysql,Sql server,数据库数据传输
- [置顶] 【mysql 数据迁移】 mysql 把数据库从一个服务器复制到另一个服务器
- PostgreSQL: 数据迁移之序列问题(也可以使用在所有使用序列数据库上,比如Oracle)
- mysql 数据迁移之数据库类型变更
- [置顶] 【mysql 数据迁移】mysql中同一服务器,要从一个数据库里复制一个表到另一个数据库