package kafkaMQ;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* datax 拼裝模板
* @author 15011
*
*/
public class ExampleTest {
@SuppressWarnings("resource")
public static void main(String[] args) {
// String dbName = "user_system";
// List<Object> tables = getTables(dbName, getConn());
String tableName= "t_user";
List<Object> column = getColumn(tableName, getConn());
JSONObject wp = parseFile(false);
List<Map> list = new ArrayList<>();
column.forEach(o->{
Map map = (Map)o;
Object columnName = map.get("COLUMN_NAME");
Object dataType = map.get("DATA_TYPE");
Map<Object, Object> temp = new HashMap<>();
temp.put("value", columnName);
temp.put("type", dataType);
list.add(temp);
});
wp.put("column", list);
generateFile("测试.json", wp);
System.out.println("文件生成成功!");
}
@SuppressWarnings("resource")
public static void generateFile(String fileName, JSONObject obj) {
File file = new File("D:\\eclipse-workspace\\kafkaMQ\\"+fileName);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
byte[] bytes = obj.toJSONString().getBytes();
fos.write(bytes);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (IOException e) { }
}
}
public static JSONObject parseFile(boolean isReader) {
JSONObject[] container = new JSONObject[2];
File file = new File("D:\\eclipse-workspace\\kafkaMQ\\job.json");
BufferedReader br = null;
InputStreamReader isr = null;
try {
isr = new InputStreamReader(new FileInputStream(file));
br = new BufferedReader(isr);
String data = null;
StringBuilder builder = new StringBuilder();
while ((data = br.readLine()) != null) {
builder.append(data);
}
data = builder.toString();
JSONObject parseObject = JSON.parseObject(data);
JSONObject jsonObject = parseObject.getJSONObject("job");
JSONArray content = jsonObject.getJSONArray("content");
JSONObject contents = content.getJSONObject(0);
JSONObject r = contents.getJSONObject("reader");
JSONObject w = contents.getJSONObject("writer");
JSONObject rp = r.getJSONObject("parameter");
JSONObject wp = w.getJSONObject("parameter");
List<Object> arrayList = new ArrayList<>();
Map<Object, Object> map = new HashMap<>();
map.put("id", "string");
map.put("name", "string");
arrayList.add(map);
wp.put("column", arrayList);
if(isReader)
return rp;
return wp;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
isr.close();
br.close();
} catch (IOException e) { }
}
return null;
}
public static Connection getConn() {
String url = "jdbc:mysql://127.0.0.1:3306/mysql?serverTimezone=UTC&characterEncoding=UTF-8";
String account = "root";
String pwd = "root";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch(ClassNotFoundException e){ try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("mysql连接失败,自动纠正"); } catch (ClassNotFoundException e1) {}
}
Connection con = null;
try {
con = DriverManager.getConnection(url,account,pwd);
System.out.println("连接获取成功。。。");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("连接失败-请检查url-account-pwd");
}
return con;
}
public static List<Object> getTables(String dbName, Connection connection) {
String sql = "select table_name from information_schema.tables where table_schema='"+dbName+"'";
return query(sql,connection);
}
public static List<Object> getColumn(String tableName, Connection connection) {
String sql = "select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH from information_schema.COLUMNS where table_name = '"+tableName+"'";
return query(sql,connection);
}
//调用它的方法如下:
public static List<Object> query(String sql,Connection connection){
List<Object> list = null;
PreparedStatement pStatement = null;
try {
//3.准备SQL语句
pStatement = connection.prepareStatement(sql);
//4.执行SQL语句
ResultSet rs = pStatement.executeQuery();
//检索此 ResultSet对象的列的数量,类型和属性。
ResultSetMetaData data = rs.getMetaData();
//返回此 ResultSet对象中的列数。
int column = data.getColumnCount();
list = new ArrayList<>();
//5.处理结果遍历要查询的数据
while (rs.next()) {
Map<String, Object> map = new HashMap<>();
for(int i = 1;i<=column;i++) {
String columnName = data.getColumnName(i);
map.put(columnName, rs.getObject(i));
}
list.add(map);
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
//6.关闭连接
try {
pStatement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
}