mysql型別批量替換工具
朋友有個把postgresql中所有numric替換成int8型別,如果記錄存在小數位則不替換的需求.幫忙寫了個小工具,mysql中測試可用.
package com.oywy;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashSet;
import java.util.Set;
/**
* 資料庫型別批量替換,新型別替換老型別,如果有存在小數則不替換
* 只對mysql做過測試
* @version 1.0
* @author oywy
*
*/
public class TypeChanger {
/**
*
* @param DriverName 驅動名
* @param url jdbc:mysql://xxxxxxx?xxxx
* @param user 使用者名稱
* @param pwd 密碼
* @param database 資料庫例項名
* @param oldType 老型別
* @param newType 新型別
* @throws Exception
*/
public static void updateType(String DriverName, String url, String user,
String pwd, String database, String oldType, String newType)
throws Exception {
Class.forName(DriverName);
Connection con = DriverManager.getConnection(url, user, pwd);
// 獲取表名,列名,資料型別
Statement st1 = con.createStatement();
Set<String[]> set = new HashSet<>();
ResultSet rs1 = st1
.executeQuery("select table_name ,column_name ,data_type from information_schema.columns where table_schema = '"
+ database + "' and data_type = '" + oldType + "'");
//oracle查詢此表user_tab_columns
while (rs1.next()) {
String table_name = rs1.getString("table_name");
String column_name = rs1.getString("column_name");
String[] arr = { table_name, column_name };
set.add(arr);
}
for (String[] arr : set) {
String sql = "select " + arr[1] + " from " + database + "."
+ arr[0] + " where " + arr[1] + " = floor(" + arr[1] + ")";
ResultSet rs2 = st1.executeQuery(sql);
if (!rs2.next()) {
System.out.println("alter table " + arr[0] + " change "
+ arr[1] + " " + arr[1] + " " + newType + ";");
}
}
}
}
相關文章
- mysql批量替換指定字串MySql字串
- vim的批量替換
- VI中的批量替換
- 批量修改檔名 與 批量檔案字元替換字元
- perl命令:批量修改替換檔案
- 型別轉換工具類型別
- linux中批量替換文字中字串Linux字串
- pandas列值根據字典批量替換
- 使用變數替換批量部署GoldenGate變數Go
- mysql替換特殊字元MySql字元
- MySQL 隱式型別轉換MySql型別
- grep、sed批量替換檔案內容shell
- rhel5 vi 批量替換匹配的字串字串
- MySQL型別轉換注意事項MySql型別
- mysql bigint型別和datetime型別的轉換MySql型別
- IP別名\替換IP
- Go小工具系列——型別轉換Go型別
- mysql的正則替換方式MySql
- 談談 MySQL 隱式型別轉換MySql型別
- 【Mysql 學習】數值型別轉換MySql型別
- SQL Server TEXT型別欄位字串替換示例處理指令碼SQLServer型別字串指令碼
- 字串與日期型別轉換的工具類字串型別
- python 與 Mysql 資料型別轉換PythonMySQL 資料型別
- PHP 型別轉換&&型別強制轉換PHP型別
- Docxtor(iWork 文件批量轉換工具)
- 資料型別,型別轉換資料型別
- Golang:cast安全且易用的型別轉換工具GolangAST型別
- Java替換各種特殊字元工具類Java字元
- java- 型別-轉換:基本型別以及包裝型別的轉換Java型別
- 型別轉換型別
- mac下如何使用Sed批量替換資料夾下的字串Mac字串
- 用python批量替換MD檔案中的圖片地址Python
- Linux下批量替換檔案中的字元 - sed (stream editor)Linux字元
- mysql BLOB型別 TEXT型別MySql型別
- java型別轉換與強制型別轉換(轉)Java型別
- HTML 替換元素與非替換元素HTML
- MySQL與oracle的資料型別轉換總結MySqlOracle資料型別
- Mysql BLOB、BLOB與TEXT區別及效能影響、將BLOB型別轉換成VARCHAR型別MySql型別