数据库设计模板 + Excel创建sql语句(VBA)
数据库设计模板 + 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)相关推荐
- mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句
[数据库设计的三大范式] 1.第一范式(1NF First Normal Fromate):数据表中的每一列(字段),必须是不可拆分的最小单元.也就是确保每一列的原子性. 例如: userInfo: ...
- mysql创建表时添加范式,MySql三大范式与数据库设计和表创建常用语句
[导读]第一范式1NF First Normal Fromate:数据表中的每一列字段,必须是不可拆分的最小单元.也就是确保每一列的原子性. [数据库设计的三大范式] 1.第一范式(1NF First ...
- MySql 数据库查看视图的创建sql语句
在网上能找到大量的视图创建.修改.删除的语句,但是查看创建语句的语句不好找. show create view VIEW_NAME
- 实战:从Mysql数据库frm文件中,提取表结构创建SQL语句
需求 在某些特殊的场景下,例如你的mysql数据库无法启动,需要你将表的ibd文件拷贝到另一个数据库中,恢复业务数据库,恢复业务数据的前提,是你需要在另一个数据库中,创建好一模一样的表结构.这时你就需 ...
- 在数据库中能不能像用excel那样直接填表保存进数据库,而不是用SQL语句
如何在sql2005表中直接填写数据? 在数据库中能不能像用excel那样直接填表保存进数据库,而不是用SQL语句 2011-4-19 14:37 提问者:善良的噜噜修 | 悬赏分:20 | 浏览次数 ...
- oracle 不能导入sql语句,oracle数据库导入.dmp脚本的sql 语句
一.更改数据库管理员sys/system密码 1.运行到C盘根目录 2.输入:SET ORACLE_SID = 你的SID名称 3.输入:sqlplus /nolog 4.输入:connect /as ...
- 今晚直播丨国产数据库入门:openGauss数据库的基本管理和SQL语句入门
国产数据库入门:openGauss数据库的基本管理和SQL语句入门 - 08/13 简介: 本讲座通过实验,学习管理openGauss数据库和SQL语言的使用: 通过学习基本的openGauss数据库 ...
- 通过excel生成sql语句
通过excel生成sql语句 有的时候业务部门直接甩过来一个excel表格让我们插入或者更新到数据库中.插入还好说,只要字段对应,就可以插入,但是更新呢?所以我们需要一个其他的操作方式,将excel生 ...
- 异构数据库之间完全可以用SQL语句导数据 ths 碧血剑!
问题:异构数据库之间完全可以用SQL语句导数据.大家抛弃BatchMove吧 如果觉得好请Up一下,如果觉得不好也请Up一下 ( 积分:1, 回复:684, 阅读:43158 ) 分类:数据库-C/S ...
最新文章
- AI不止能美颜,美妆迁移这样做 | 赠书
- VS2008工具,两种加入库的方法。 设置程序运行时目录
- C编程实践:简单的通讯录
- HTTP方法:幂等性和安全性
- chrome json插件_如何使用此免费的Chrome扩展程序(或Firefox插件)获取易于阅读的JSON树
- python打开word后再关闭再打开出错_用Python写了个程序调用word,运行完后再手动打开word文档就变慢了,这是为啥?...
- HIve常用CLI命令
- 转载CentOS7 yum 安装与配置MySQL5.7
- 在Intellij idea中快速重写父类方法
- 所有的Python库,我都整理在这里了
- IIS无法启动问题的解决
- 分子生物学知识点归纳
- UVA 10131 Is Bigger Smarter? (DP,最长条件子序列)
- DNN实战-猫狗分类
- Mac Docker配置阿里云镜像(最新)
- Coolpad CT180无线网卡驱动
- 【系统分析师之路】2016年系统分析师下午案例分析真题
- Sothink SWF Decompiler 4
- 常⻅的 ORM 框架有哪些?
- 沉浸式状态栏ImmersionBar