EXCEL生成MySql建表语句

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

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

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

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

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

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

最终效果,如下图:

以上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

好啦,就这样吧!

虽是原创,但也可转载~

我是来自北京天码科技的卢泽

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值