java代码实现oracle sql语句转mysql sql语句

package com;

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


/**
 * @author Administrator
 * oracle sql语句转mysql sql语句
 */
public class OracleToMysqlInsert {
	public void doChange(String filePath) {
		try {
			File file = new File(filePath);
			FileReader rd = new FileReader(file);
//			BufferedReader br = new BufferedReader(rd);
			InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
			BufferedReader br = new BufferedReader(isr);

			File outFile = new File(
					filePath.substring(0,
							filePath.lastIndexOf(File.separator) + 1)
							+ "I"
							+ filePath.substring(filePath
									.lastIndexOf(File.separator) + 1));
//			FileWriter b = new FileWriter(outFile, false);
			
			FileOutputStream writerStream = new FileOutputStream(outFile, false);
			BufferedWriter b = new BufferedWriter(new OutputStreamWriter(writerStream, "UTF-8"));
			
			String rowStr;
			int i = 0;
			while (!(rowStr = br.readLine()).equals("##")) {
				while (rowStr.indexOf("to_date('") > 0) {
					String rowTemp = rowStr.substring(rowStr
							.indexOf("to_date('"));
					String aimStr = rowTemp.substring(
							rowTemp.indexOf("('") + 1, rowTemp.indexOf(","));
					String dateTemp = null;
					if (aimStr.indexOf(" ") > 0) {
						dateTemp = aimStr.substring(aimStr.indexOf("'") + 1,
								aimStr.indexOf(" "));
					} else {
						dateTemp = aimStr.substring(aimStr.indexOf("'") + 1,
								aimStr.lastIndexOf("'"));
					}
					String[] strTemp = dateTemp.split("-");
					String dateStr = strTemp[2] + "-" + strTemp[1] + "-"
							+ strTemp[0];
					aimStr = aimStr.replaceFirst(dateTemp, dateStr);
					String resStr = rowTemp.substring(0,
							rowTemp.indexOf(")") + 1);
					rowStr = rowStr.replace(resStr.subSequence(0, resStr
							.length()), aimStr.subSequence(0, aimStr.length()));

				}
				b.write(rowStr);
				System.out.println(rowStr);
				b.write("\r\n");
			}
			b.flush();
			// rename to the original File

			file.delete();
			b.close();
			rd.close();
		} catch (FileNotFoundException e) {
//			System.out.println("�ļ�δ�ҵ���");
			e.printStackTrace();
		} catch (IOException e) {
//			System.out.println("IO�쳣���޷�д�ļ���");
			e.printStackTrace();
		}
	}

	public static void main(String arg[]) {
		OracleToMysqlInsert changtext = new OracleToMysqlInsert();
		changtext.doChange("C:\\Users\\Administrator\\Desktop\\sys_i18n_message.sql");
		System.out.println("OK");
//		changtext.doChange("D:\\import\\" + "supplier.sql");
//		changtext.doChange("D:\\import\\" + "supplierDetail.sql");
//		changtext.doChange("D:\\importData\\" + "codetype.sql");
//		changtext.doChange("D:\\importData\\" + "codedict.sql");
//		changtext.doChange("D:\\importData\\" + "port.sql");
//		changtext.doChange("D:\\importData\\" + "country.sql");
//		changtext.doChange("C:\\" + "PODETAIL.sql");
	}

}

很抱歉,Druid不能直接将Oracle SQL语句换为MySQL语句,因为OracleMySQL的语法有很大的区别。但是,你可以手动将Oracle SQL语句换为MySQL语句,或者使用一些第三方工具进行换。 以下是一些常见的Oracle SQL语句MySQL语句的对比: 1. 创建表: Oracle SQL语句: ``` CREATE TABLE employees ( employee_id NUMBER(6), first_name VARCHAR2(20), last_name VARCHAR2(25), email VARCHAR2(25), hire_date DATE, job_id VARCHAR2(10), salary NUMBER(8,2), commission_pct NUMBER(2,2), manager_id NUMBER(6), department_id NUMBER(4) ); ``` MySQL语句: ``` CREATE TABLE employees ( employee_id INT(6), first_name VARCHAR(20), last_name VARCHAR(25), email VARCHAR(25), hire_date DATE, job_id VARCHAR(10), salary DECIMAL(8,2), commission_pct DECIMAL(2,2), manager_id INT(6), department_id INT(4) ); ``` 2. 插入数据: Oracle SQL语句: ``` INSERT INTO employees (employee_id, first_name, last_name, email, hire_date, job_id, salary, commission_pct, manager_id, department_id) VALUES (100, 'Steven', 'King', 'steven.king@example.com', '17-JUN-87', 'AD_PRES', 24000, NULL, NULL, 90); ``` MySQL语句: ``` INSERT INTO employees (employee_id, first_name, last_name, email, hire_date, job_id, salary, commission_pct, manager_id, department_id) VALUES (100, 'Steven', 'King', 'steven.king@example.com', '1987-06-17', 'AD_PRES', 24000, NULL, NULL, 90); ``` 3. 查询数据: Oracle SQL语句: ``` SELECT employee_id, first_name, last_name, email, hire_date, job_id, salary, commission_pct, manager_id, department_id FROM employees WHERE department_id = 90 ORDER BY hire_date DESC; ``` MySQL语句: ``` SELECT employee_id, first_name, last_name, email, hire_date, job_id, salary, commission_pct, manager_id, department_id FROM employees WHERE department_id = 90 ORDER BY hire_date DESC; ``` 需要注意的是,OracleMySQL的数据类型有很大的区别,因此在进行数据类型换时需要注意精度和类型的匹配问题。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值