简单程序实现 mysql 表创建sql 转成 doris 表创建sql

这篇博客介绍了如何将MySQL的表创建SQL转换为Doris的表创建SQL。首先,文章提及了导入必要的依赖,然后详细说明了如何读取SQL文件并进行转换。在验证转换结果部分,展示了转换后的Doris表创建语句。最后,作者提醒读者注意SQL文件路径,特别是在打包项目时的位置。
摘要由CSDN通过智能技术生成

1,导入依赖

<dependency>
    <groupId>com.github.jsqlparser</groupId>
    <artifactId>jsqlparser</artifactId>
    <version>3.1</version>
</dependency>

2,读取sql文件,sql转换

package readsql;

import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.parser.CCJSqlParserManager;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.create.table.ColDataType;
import net.sf.jsqlparser.statement.create.table.ColumnDefinition;
import net.sf.jsqlparser.statement.create.table.CreateTable;
import org.apache.commons.lang3.StringUtils;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class ReadSqlFileCreateDorisSqlResult {

    public static void main(String[] args) throws JSQLParserException {


        try {
            List<String> list = ReadSqlFileCreateDorisSqlResult.readFile("doris_test.sql");
//            List<String> list = SqlFileUtil2.readFile("q2.sql");


            //todo 最后输出格式一
            List<String> createSqlList = new ArrayList<>();

            //todo 最后输出格式二,字符串
            StringBuilder finalSqlBuilder = new StringBuilder();

            for (String sql : list) {
                //todo 字段到结尾
                StringBuilder sqlBuilder = new StringBuilder();

                //todo 建表语句+主键
                StringBuilder prefixBuilder = new StringBuilder();

               CCJSqlParserManager parser = new CCJSqlParserManager();
                List<ColumnDefinition> columnList = null; //todo 列 字段名称跟信息。
                String tableName = ""; //todo 表名字
                List<String> pkColumnsList = null ; //todo 主键名称

                if(sql.contains("AUTO_INCREMENT")){
                    sql = sql.replaceAll("AUTO_INCREMENT","");
                }
                Statement stmt = parser.parse(new StringReader(sql));
                if (stmt instanceof CreateTable) {
                    tableName= ((CreateTable) stmt).getTable().getName();
                    ((CreateTabl
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值