turn str.trim(); } /** * @param lineChar 行数 * @return 符合规范的字符 */ private String checkSqlTabName(String lineChar, List
keys, int lineInt) { String str = ""; StringBuilder builder = new StringBuilder(); str = lineChar.replaceFirst("R:", "T:").trim(); str = str.replace(":", "").trim(); String[] splited = str.split("\\s+"); str = splited[0] + "!" + splited[1]; if (keys.isEmpty() && lineInt > 1) { builder.append("06!KEY \n \n"); } else if (!keys.isEmpty() && lineInt > 1) { //倒序 //Collections.reverse(keys); String keyStr = keys.toString(); System.out.println("keyStr:"+keyStr); keyStr = keyStr.replaceFirst("\\[", "").trim(); keyStr = keyStr.replaceFirst("\\]", "").trim(); builder.append("06!PRIMARY KEY(" + keyStr + ") \n \n"); keys.clear(); } builder.append(str); return builder.toString(); }
1.得到的结果
01!BPCCHMAK
03!SEQ!DIC(JRN_SEQ)03!JRNNO!DIC(JRNNO)
03!JRN_SEQ!DIC(JRN_SEQ)03!TX_TM!DIC(TM)
03!TX_CD!DIC(TX_CD)
03!TX_TYPE!DIC(FRE_CD10)
03!MAKER!DIC(TLR_NO)
03!CHECKER!DIC(TLR_NO)
03!FIELD_NAME!DIC(X20)
03!OLD_VALUE!DIC(DESC_50)
03!NEW_VALUE!DIC(DESC_50)06!KEY
CopyBookToSql.java 将临时文件和数据字典对比转化为SQL语言
/**
* @param arry1
* @param arry2 存放表中字段的数据,以03和05开头,长度在3和4之间
* @param lineChar 存放数据字典的对应表类型的数据,DIC需要参考数据字典,PIC不需要参考数据字典,直接拿就行
* @return
*/
private String splitSql(String[] arry1, String[] arry2, String lineChar) {
if (arry1[0].equals(treeNumber) || arry1[0].equals(fourNumber) || arry1[0].equals(fiveNumber)) {
if (arry1[2].equals(PIC)) {
// 以X开头的
if (arry1[3].startsWith(PIC_X)) {
String number = getNumbers(arry1[3]);
if (Integer.valueOf(number) != 26) {
lineChar = arry1[1] + "\t" + "CHAR(" + number + ")" + "\t" + "DEFAULT ' ' NOT NULL ,";
} else {
lineChar = arry1[1] + "\t" + "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,";
}
} else if (arry1[3].startsWith(PIC_S)) {
String number = getSNine(arry1[3]);
lineChar = arry1[1] + "\t" + "DECIMAL(" + number + ",0)" + "\t" + "DEFAULT 0 NOT NULL,";
} else if (arry1[3].startsWith(PIC_N)) {
int number = Integer.valueOf(getNumbers(arry1[3]));
lineChar = arry1[1] + "\t" + "DECIMAL(" + number + ",0)" + "\t" + "DEFAULT 0 NOT NULL ,";
}
} else if (arry1[2].startsWith(DIC)) {
// 第三个数中不带有逗号
if (arry1[2].contains(",")) {
String str = getTwoBranket(arry1[2])[0];
// 匹配到某个关键字
if (arry2[0].equals(str)) {
// X类型
if (PIC_X.equals(arry2[1])) {
lineChar = arry1[1] + "\t" + "CHAR(" + arry2[2] + ")" + "\t" + "DEFAULT ' ' NOT NULL,";
}
// N类型
if (PIC_N.equals(arry2[1])) {
lineChar = arry1[1] + "\t" + "DECIMAL(" + arry2[2] + "," + arry2[3] + ")" + "\t"
+ "DEFAULT 0 NOT NULL,";
}
// M类型
if (PIC_M.equals(arry2[1])) {
int num = Integer.valueOf(arry2[2]) * 3;
if (num >= 255) {
lineChar = arry1[1] + "\t" + "VARCHAR(" + num + ")" + "\t" + "DEFAULT ' ' NOT NULL,";
} else {
lineChar = a