设为首页 加入收藏

TOP

从MYSQL到oracle的迁移以及备份(四)
2014-11-24 08:21:46 来源: 作者: 【 】 浏览:2
Tags:MYSQL oracle 迁移 以及 备份
个字符串数组

for (int i = 0; i < datas.length; i++) {
String data=null;
if(datas.length==1){ //如果只有一条数据,不会被分割的,数组就会只有一条数据
data=datas[i];
}else{
if(i==0) //如果是第一条,那么后面需要追加一个括号
data=datas[i]+")";
else if(i==datas.length-1) //如果是最后一条,需要在前面加一个括号
data="("+datas[i];
else //如果是中间的数据,前后都需要加括号
data="("+datas[i]+")";
}
sb.append(forward_line); //将insert 字段名和values先行加入
sb.append(data+";");
sb.append("\r\n");
}
sb.append("\r\n");
return sb.toString();
}

}
这是通用方法,以后需要得到MYSQL的两个初始化脚本就通过这个方法已转换就可以。
二、Oracle建表的问题没有通过这个解决,可以通过Hibernate逆向生成。建表和表结构,表关系,都有了。
下面就是插入数据了:
关于MYSQL的insert脚本基本上和Oracle的一致,但是也有不一致,对于日期,对于一些符号’都是问题。将MYSQL的insert语句转换成ORACLE的insert语句。
1、需要将’去掉,这个符号是在插入数据时的表名上括起来的,所以,将表名上的’都替换掉。
2、需要将date日期,经过函数to_date(date,”yyyy-MM-dd”)转换一下,所以我通过正则表达式来查找到所有的日期,还有一种日期,携带时分秒的日期,需要另一个正则,最后当然都是替换成为年月日就可以了。
package com.sql.convert;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FromMYSQLInsertToOracleInsert {
/**
* 需要转换一下地方:
* 将所有的表名以及列名中的'去掉
* @param args
* @throws IOException
*/

public static void main(String[] args) throws IOException {
String mysql_file="C:/Documents and Settings/gaofei/桌面/insertData.sql";
String oracle_file="C:/Documents and Settings/gaofei/桌面/oracle_insertData.sql";

turnSQL(mysql_file, oracle_file);

}
private static void turnSQL(String mysql_file,String oracle_file) throws IOException{
File mysqlFile=new File(mysql_file);
File oracleFile=new File(oracle_file);
if(!oracleFile.exists())
oracleFile.createNewFile();
InputStreamReader isr=new InputStreamReader(new FileInputStream(mysqlFile), "UTF-8");
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(oracleFile), "UTF-8");

BufferedReader br=new BufferedReader(isr);
BufferedWriter bw=new BufferedWriter(osw);

String line=null;
while((line=br.readLine())!=null){
bw.append(convertString(line));
bw.append("\r\n");
}
bw.flush();
br.close();
bw.close();
isr.close();
osw.close();
}
private static String convertString(String line){
line=line.replace("`", "");
Pattern p=Pattern.compile("'\\d{4}\\-\\d+\\-\\d+'");
Matcher m=p.matcher(line);
String date=null;
while(m.find()){
date=m.group(0);
line=line.replace(date, "to_date("+date+",'yyyy-MM-dd')");
}
p=Pattern.compile("'\\d{4}\\-\\d+\\-\\d+\\s\\d+\\:\\d+\\:\\d+'");
m=p.matcher(line);
date=null;
while(m.find()){
首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySQL迁移到MariaDB的步骤 下一篇MySQL 5.0迁移到MariaDB 10.0.2存..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·一篇说人话的文章, (2025-12-27 07:50:09)
·Python Web框架哪家 (2025-12-27 07:50:06)
·基于Python的数据分 (2025-12-27 07:50:03)
·深入理解 Java 集合 (2025-12-27 07:22:48)
·Java集合框架全面解 (2025-12-27 07:22:45)