设为首页 加入收藏

TOP

使用java将COBOL语句转化为标准SQL语句的方法(二)
2017-12-24 06:07:09 】 浏览:515
Tags:使用 java COBOL 语句 化为 标准 SQL 方法
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
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇sqlserver登录名和用户名的区别和.. 下一篇Reids内存优化教程

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目