EXCEL生成MySql建表语句

       今天遇到同事提出的一个需求,在excel里有表的结构,但导入到Mysql时出现问题,字段名可以正常导入,但字段类型和长度还得手动修改,问一下有没有什么简便方法。

       我使用的是Office2019的Excel。下面步入正题:

1、图1:空白,准备显示生成的SQL语句。图2:用户表。 图3:年级表。

EXCEL生成MySql建表语句_第1张图片

EXCEL生成MySql建表语句_第2张图片

EXCEL生成MySql建表语句_第3张图片

2、在“开发工具”菜单里打开Visual Basic。如果没有“开发工具”这个选项,在文件 -->选项里设置一下,把开发工具勾上即可。如下图:

EXCEL生成MySql建表语句_第4张图片

EXCEL生成MySql建表语句_第5张图片

继续刚才的内容,打开Visual Basic之后,双击sheet1,打开窗口,并写入代码,如下图:

EXCEL生成MySql建表语句_第6张图片

接着,点击运行按钮即可。如下图:

EXCEL生成MySql建表语句_第7张图片

最终效果,如下图:

EXCEL生成MySql建表语句_第8张图片

以上SQL语句没有经过测试,只是生成这么一个效果。大家可以参考一下,如果有问题,请自行调整。

以下是代码片断:(本想放在下载里的,但想想,还是算了,大家都没有下载积分了……)

Sub generateSql()

    'sql语句变量和表名变量
    Dim sql As String
    Dim tableName As String
    
    '第一个sheet用于保存生成的SQL语句,所以从第二个开始
    For si = 2 To Workbooks(1).Sheets.Count
 
        Set mysheet = Workbooks(1).Sheets(si) 'sheet对象
        
        tableName = mysheet.Range("A2").Value '表名-英文(第一列第二行)
        
        '如果表已经存在,则删除
        sql = sql & "DROP TABLE IF EXISTS '" & tableName & "'; " & vbCrLf
        
        '创建表
        sql = sql & "CREATE TABLE '" & tableName & "' ( " & vbCrLf
            
        
        For i = 2 To mysheet.UsedRange.Rows.Count '遍历列
            Dim nameStr As String '字段名
            Dim typeStr As String '类型及长度
            Dim nullStr As String '是否为空
            Dim comment As String '注释
        
            '以下四行是为上面的变量赋值
            nameStr = mysheet.Range("B" & i).Value
            typeStr = mysheet.Range("C" & i).Value
            nullStr = mysheet.Range("D" & i).Value
            comment = mysheet.Range("E" & i).Value
            
            sql = sql & "'" & nameStr & "' " & typeStr
            
            '判断是否为空
            If nullStr = "Y" Then
                sql = sql & " NOT NULL "
            Else
                sql = sql & " NULL "
            End If
            
            sql = sql & "COMMENT '" & comment & "'"
            
            
            If i <= mysheet.UsedRange.Rows.Count Then
                sql = sql & ","
            End If
            
            sql = sql & vbCrLf
        Next i
        
        '默认id为主键
        sql = sql & "PRIMARY KEY ('id')"
        '建表完成
        sql = sql & vbCrLf
        sql = sql & ");" & vbCrLf
        sql = sql & "-----创建表 " & tableName & " 成功" & vbCrLf & vbCrLf
    Next si
    Workbooks(1).Sheets(1).Range("A" & 1).Value = sql
End Sub

好啦,就这样吧!

虽是原创,但也可转载~

我是来自大连华信-未来出行事业部-交通业务研发中心的卢泽

你可能感兴趣的:(EXCEL生成MySql建表语句)