mysql数据类型转sqlite并拼接成建表语句

文件需要会员才能下载,需要用到的小伙伴如果不知道如何把宏代码复制到excel的开发工具中可以百度下,只有.xlsm的文件才可以保存宏,也可以通过百度网盘下载

链接:https://pan.baidu.com/s/1F-xM8-KRQ_IzzaamWbUllg
提取码:sqli

在这里插入图片描述

表结构和需复制到excel的列

在这里插入图片描述

复制到excel的列,将数据库的列复制过来之后点击按钮建表语句生成即可

在这里插入图片描述
在这里插入图片描述
弹出框和F列有文本代表已经生成建表语句

生成后的语句

在这里插入图片描述

注意点

使用vba的宏程序去生成,目前只对varchar,int,decimal,date,datetime格式进行了转换,由于sqlite没有日期格式,代码里转为了bigint,也可根据个人喜好转为varchar

代码

Sub GenerateColumnStrings()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim col2Value As Variant
    Dim col3Value As Variant
    Dim col4Value As String
    Dim resultString As String
    Dim finalResult As String
    
    ' 设置要操作的工作表
    Set ws = ThisWorkbook.Sheets("Sheet1") ' 根据实际工作表名称修改
    
    ' 获取最后一行
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    ' 初始化最终结果字符串,注意这里修正了初始字符串的格式
    finalResult = "CREATE_TABLE_WTBH_IF_NOT_EXISTS: ` CREATE TABLE if not exists  ${TABLE_NAME()} (" & vbCrLf
    
    ' 遍历每一行
    For i = 2 To lastRow
        ' 获取第二列、第三列和第四列的值及类型
        col2Value = ws.Cells(i, 2).Value
        col3Value = ws.Cells(i, 3).Value
        col4Value = ws.Cells(i, 4).Value
        col5Value = ws.Cells(i, 5).Value
        
        ' 根据第二列数据类型生成相应格式的字符串
        Select Case LCase(col2Value)
            Case "varchar"
                If InStr(1, col5Value, "主键ID") > 0 Then
                    resultString = ws.Cells(i, 1).Value & " " & col2Value & "(" & col3Value & ")"
                Else
                    resultString = ws.Cells(i, 1).Value & " " & col2Value & "(" & col3Value & ") DEFAULT ''"
                End If
                
            Case "int"
                resultString = ws.Cells(i, 1).Value & " INTEGER"
            Case "decimal"
                resultString = ws.Cells(i, 1).Value & " DECIMAL" & " " & "(" & col3Value & "," & col4Value & ")"
            ' 如需修改date转换的类型为varchar 则根据case varchar 进行修改
            Case "date"
                resultString = ws.Cells(i, 1).Value & " BIGINT"
            Case "datetime"
                resultString = ws.Cells(i, 1).Value & " BIGINT"
            Case Else
                resultString = ""
        End Select
        
        ' 添加主键和注释
        'If InStr(1, col4Value, "主键ID") > 0 Then
           ' resultString = resultString & " PRIMARY KEY AUTOINCREMENT NOT NULL"
       ' End If
        
        ' 添加注释
        If i < lastRow Then
            resultString = resultString & ", --" & col5Value
        Else
            resultString = resultString & " --" & col5Value
        End If
        
        ' 将当前行生成的字符串追加到最终结果
        finalResult = finalResult & resultString
        
        ' 如果不是最后一行,则添加换行符
        If i < lastRow Then
            finalResult = finalResult & vbCrLf
        End If
    Next i
    
    ' 去掉最后一个逗号和换行符
    If Right(finalResult, 2) = "," & vbCrLf Then
        finalResult = Left(finalResult, Len(finalResult) - 2)
    End If
    
    ' 完成 CREATE TABLE 语句的闭合
    finalResult = finalResult & vbCrLf & ")`,"
    
    ' 输出最终结果到消息框和调试窗口
    Debug.Print finalResult
    ' MsgBox finalResult
    
    ' 将最终结果写入到第一列的第五行
    ws.Cells(1, 6).Value = finalResult
    
    ' 清除第一到第四列的数据
    ws.Range(ws.Cells(2, 1), ws.Cells(lastRow, 5)).ClearContents
    
    ' 提示完成
    MsgBox "字符串生成完成,并写入第一列的第6行。前4列数据已清除。"
End Sub


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值