数据库设计模板 + Excel创建sql语句-VBA

  • 1. 表格设计
  • 2. 效果展示
  • 3. VB代码
  • 4. Excel测试文件下载

1. 表格设计

  • 直接看图,3个页签
  • 《建表语句》页签,把设计的表名统计到此页签,在【是否建表】控制是否创建该表的建表语句,1是 其他否。

2. 效果展示

  • 点击生成对应的sql文件(建表语句)
  • 去路径下查看对应的sql文件,打开即可查看相应的建表语句

3. VB代码

  • 代码截图

  • 代码源码

'基础层CREATE
Sub MySQL建表sql()Dim avFilePath As String '文件路径Dim lvIntFileNum As Integer '空文件号Dim lvContents As StringavFilePath = "F:\mysql_createtable_" & Format(Date, "yyyymmdd") & "_v1.0" & ".sql" '文件路径TargetSheetName = "建表语句"'生成建表hqlDim sql As StringDim cc As StringDim tableName As String             '表名Dim tableComm As String             '表注释Dim firstColumn As Integer          '是否首个字段Dim clusterColumn As String         '分桶字段Dim clusterNum  As String           '分桶数量Dim version_type  As String         '版本标志Dim PRIMARY As String               '主键'Dim PP As String               '主键'Set mysheet = Workbooks(1).Sheets(TargetSheetName)  '指定表名所在的sheet,根据实际修改For table_cnt = 2 To mysheet.UsedRange.Rows.Count '从第2行开始遍历所有的列Set mysheet = Workbooks(1).Sheets(TargetSheetName) '指定表名所在的sheet,根据实际修改tableName = mysheet.Range("B" & table_cnt).Value '英文表名,根据实际修改tableComm = mysheet.Range("A" & table_cnt).Value '中文表名,根据实际修改version_type = mysheet.Range("C" & table_cnt).Value '版本标志If tableName <> "" And version_type = "1" ThenclusterColumn = ""clusterNum = ""cc = ""PRIMARY = ""PP = ""'sql = sql & "DROP TABLE IF EXISTS XIBREW." & tableName & ";" & vbLfsql = sql & "CREATE TABLE " & tableName & "  ( " & vbLfSet mysheet = Workbooks(1).Sheets("MySQL数据库表设计") '指定字段名所在的sheet,根据实际修改firstColumn = 1For i = 2 To mysheet.UsedRange.Rows.Count '从第2行开始遍历所有的列Dim nameStr As StringDim typeStr As StringIf mysheet.Range("C" & i).Value = tableName ThennameStr = mysheet.Range("D" & i).Value '字段名,根据实际修改commStr = mysheet.Range("E" & i).Value '中文注释,根据实际修改typeStr = mysheet.Range("F" & i).Value '数据类型,根据实际修改If mysheet.Range("G" & i).Value = "是" Then          '是否主键PRIMARY = mysheet.Range("D" & i).ValueEnd IfIf firstColumn = 1 Thensql = sql & "    " & nameStr & " " & typeStr & " DEFAULT NULL COMMENT '" & commStr & "'"Elsesql = sql & "    ," & nameStr & " " & typeStr & " DEFAULT NULL COMMENT '" & commStr & "'"End IfIf PRIMARY <> "" ThenPP = clusterNum & "ALTER TABLE  " & tableName & " ADD PRIMARY KEY(" & PRIMARY & ");"ElsePP = PRIMARYEnd Ifsql = sql & vbLfcc = cc & "COMMENT ON COLUMN " & tableName & "." & nameStr & " IS '" & commStr & "';" & vbLffirstColumn = firstColumn + 1End IfNext isql = sql & ")" & vbLf & "ENGINE = InnoDB DEFAULT CHARSET=utf8 COMMENT= '" & tableComm & "';" & vbLf & PP & vbLf & vbLfEnd IfNext table_cntlvContents = lvContents + sqlConst adSaveCreateNotExist = 1Const adSaveCreateOverWrite = 2Const adTypeBinary = 1Const adTypeText = 2Dim objStreamUTF8: Set objStreamUTF8 = CreateObject("ADODB.Stream")Dim objStreamUTF8NoBOM: Set objStreamUTF8NoBOM = CreateObject("ADODB.Stream")With objStreamUTF8.Charset = "UTF-8".Open.WriteText lvContents.Position = 0.Type = adTypeText.Position = 3End WithWith objStreamUTF8NoBOM.Type = adTypeBinary.OpenobjStreamUTF8.CopyTo objStreamUTF8NoBOM.SaveToFile avFilePath, adSaveCreateOverWriteEnd WithobjStreamUTF8.CloseobjStreamUTF8NoBOM.CloseMsgBox "文件生成成功!文件路径" + avFilePathEnd Sub

'基础层CREATE
Sub Oracle建表sql()Dim avFilePath As String '文件路径Dim lvIntFileNum As Integer '空文件号Dim lvContents As StringavFilePath = "F:\oracle_createtable_" & Format(Date, "yyyymmdd") & "_v1.0" & ".sql" '文件路径TargetSheetName = "建表语句"'生成建表hqlDim sql As StringDim cc As StringDim tableName As String             '表名Dim tableComm As String             '表注释Dim firstColumn As Integer          '是否首个字段Dim clusterColumn As String         '分桶字段Dim clusterNum  As String           '分桶数量Dim version_type  As String         '版本标志Dim PRIMARY As String               '主键'Dim PP As String               '主键'Set mysheet = Workbooks(1).Sheets(TargetSheetName)  '指定表名所在的sheet,根据实际修改For table_cnt = 2 To mysheet.UsedRange.Rows.Count '从第2行开始遍历所有的列Set mysheet = Workbooks(1).Sheets(TargetSheetName) '指定表名所在的sheet,根据实际修改tableName = mysheet.Range("B" & table_cnt).Value '英文表名,根据实际修改tableComm = mysheet.Range("A" & table_cnt).Value '中文表名,根据实际修改version_type = mysheet.Range("C" & table_cnt).Value '版本标志If tableName <> "" And version_type = "1" ThenclusterColumn = ""clusterNum = ""cc = ""PRIMARY = ""PP = ""'sql = sql & "DROP TABLE IF EXISTS XIBREW." & tableName & ";" & vbLfsql = sql & "CREATE TABLE " & tableName & "  ( " & vbLfSet mysheet = Workbooks(1).Sheets("Oracle数据库表设计") '指定字段名所在的sheet,根据实际修改firstColumn = 1For i = 2 To mysheet.UsedRange.Rows.Count '从第2行开始遍历所有的列Dim nameStr As StringDim typeStr As StringIf mysheet.Range("C" & i).Value = tableName ThennameStr = mysheet.Range("D" & i).Value '字段名,根据实际修改commStr = mysheet.Range("E" & i).Value '中文注释,根据实际修改typeStr = mysheet.Range("F" & i).Value '数据类型,根据实际修改If mysheet.Range("G" & i).Value = "是" Then          '是否主键PRIMARY = mysheet.Range("D" & i).ValueEnd IfIf firstColumn = 1 Thensql = sql & "    " & nameStr & " " & typeStr & " NULL"Elsesql = sql & "    ," & nameStr & " " & typeStr & " NULL"End IfIf PRIMARY <> "" ThenPP = clusterNum & "ALTER TABLE  " & tableName & " ADD CONSTRAINT PK_" & tableName & " PRIMARY KEY(" & PRIMARY & ");"ElsePP = PRIMARYEnd Ifsql = sql & vbLfcc = cc & "COMMENT ON COLUMN " & tableName & "." & nameStr & " IS '" & commStr & "';" & vbLffirstColumn = firstColumn + 1End IfNext isql = sql & ");" & vbLf & "COMMENT ON TABLE " & tableName & " IS '" & tableComm & "';" & vbLf & cc & vbLf & PP & vbLf & vbLf & vbLfEnd IfNext table_cntlvContents = lvContents + sqlConst adSaveCreateNotExist = 1Const adSaveCreateOverWrite = 2Const adTypeBinary = 1Const adTypeText = 2Dim objStreamUTF8: Set objStreamUTF8 = CreateObject("ADODB.Stream")Dim objStreamUTF8NoBOM: Set objStreamUTF8NoBOM = CreateObject("ADODB.Stream")With objStreamUTF8.Charset = "UTF-8".Open.WriteText lvContents.Position = 0.Type = adTypeText.Position = 3End WithWith objStreamUTF8NoBOM.Type = adTypeBinary.OpenobjStreamUTF8.CopyTo objStreamUTF8NoBOM.SaveToFile avFilePath, adSaveCreateOverWriteEnd WithobjStreamUTF8.CloseobjStreamUTF8NoBOM.CloseMsgBox "文件生成成功!文件路径" + avFilePathEnd Sub

4. Excel测试文件下载

  • 下载地址:
    数据库设计模板 + VBA创建sql语句.

数据库设计模板 + Excel创建sql语句(VBA)相关推荐

  1. mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句

    [数据库设计的三大范式] 1.第一范式(1NF First Normal Fromate):数据表中的每一列(字段),必须是不可拆分的最小单元.也就是确保每一列的原子性. 例如: userInfo: ...

  2. mysql创建表时添加范式,MySql三大范式与数据库设计和表创建常用语句

    [导读]第一范式1NF First Normal Fromate:数据表中的每一列字段,必须是不可拆分的最小单元.也就是确保每一列的原子性. [数据库设计的三大范式] 1.第一范式(1NF First ...

  3. MySql 数据库查看视图的创建sql语句

    在网上能找到大量的视图创建.修改.删除的语句,但是查看创建语句的语句不好找. show create view VIEW_NAME

  4. 实战:从Mysql数据库frm文件中,提取表结构创建SQL语句

    需求 在某些特殊的场景下,例如你的mysql数据库无法启动,需要你将表的ibd文件拷贝到另一个数据库中,恢复业务数据库,恢复业务数据的前提,是你需要在另一个数据库中,创建好一模一样的表结构.这时你就需 ...

  5. 在数据库中能不能像用excel那样直接填表保存进数据库,而不是用SQL语句

    如何在sql2005表中直接填写数据? 在数据库中能不能像用excel那样直接填表保存进数据库,而不是用SQL语句 2011-4-19 14:37 提问者:善良的噜噜修 | 悬赏分:20 | 浏览次数 ...

  6. oracle 不能导入sql语句,oracle数据库导入.dmp脚本的sql 语句

    一.更改数据库管理员sys/system密码 1.运行到C盘根目录 2.输入:SET ORACLE_SID = 你的SID名称 3.输入:sqlplus /nolog 4.输入:connect /as ...

  7. 今晚直播丨国产数据库入门:openGauss数据库的基本管理和SQL语句入门

    国产数据库入门:openGauss数据库的基本管理和SQL语句入门 - 08/13 简介: 本讲座通过实验,学习管理openGauss数据库和SQL语言的使用: 通过学习基本的openGauss数据库 ...

  8. 通过excel生成sql语句

    通过excel生成sql语句 有的时候业务部门直接甩过来一个excel表格让我们插入或者更新到数据库中.插入还好说,只要字段对应,就可以插入,但是更新呢?所以我们需要一个其他的操作方式,将excel生 ...

  9. 异构数据库之间完全可以用SQL语句导数据 ths 碧血剑!

    问题:异构数据库之间完全可以用SQL语句导数据.大家抛弃BatchMove吧 如果觉得好请Up一下,如果觉得不好也请Up一下 ( 积分:1, 回复:684, 阅读:43158 ) 分类:数据库-C/S ...

最新文章

  1. AI不止能美颜,美妆迁移这样做 | 赠书
  2. VS2008工具,两种加入库的方法。 设置程序运行时目录
  3. C编程实践:简单的通讯录
  4. HTTP方法:幂等性和安全性
  5. chrome json插件_如何使用此免费的Chrome扩展程序(或Firefox插件)获取易于阅读的JSON树
  6. python打开word后再关闭再打开出错_用Python写了个程序调用word,运行完后再手动打开word文档就变慢了,这是为啥?...
  7. HIve常用CLI命令
  8. 转载CentOS7 yum 安装与配置MySQL5.7
  9. 在Intellij idea中快速重写父类方法
  10. 所有的Python库,我都整理在这里了
  11. IIS无法启动问题的解决
  12. 分子生物学知识点归纳
  13. UVA 10131 Is Bigger Smarter? (DP,最长条件子序列)
  14. DNN实战-猫狗分类
  15. Mac Docker配置阿里云镜像(最新)
  16. Coolpad CT180无线网卡驱动
  17. 【系统分析师之路】2016年系统分析师下午案例分析真题
  18. Sothink SWF Decompiler 4
  19. 常⻅的 ORM 框架有哪些?
  20. 沉浸式状态栏ImmersionBar

热门文章

  1. windows server2016搭建IIS网站
  2. python q-q图 和PP图
  3. Fedora linux中下载更新火狐浏览器Firefox
  4. 根据tt文件模板自动生成代码
  5. [AHK]为Word中的格式刷定义热键
  6. Android手机省电指南
  7. 有关win7 设备管理器空白,没有声音的问题
  8. [转帖]Photoshop照片合成:水晶球里的性感美女
  9. 平衡二叉树中点的数量
  10. 每一次离别真的意味着重逢么