excel自动生成创建表sql语句

excel自动生成创建表sql语句Sub 选项按钮 4 Click DimsqlStr sqlTemp pkStr columnName columnType columnLength isPk notExistTabl isNull commentAsStr columnListIn

Sub 选项按钮4_Click() Dim sqlStr, sqlTemp, pkStr, columnName, columnType, columnLength, isPk, notExistTable, isNull, comment As String Dim tableListIndex, columnListIndex As Integer Dim avFilePath As String '文件路径 Dim lvIntFileNum As Integer '空文件号 Dim lvContents As String avFilePath = "D:\SQLServer.txt" '文件路径 lvIntFileNum = FreeFile() '获取一个空文件 '生成建表hql Dim sql As String Dim tableName As String Dim comm As String For si = 3 To Workbooks(1).Sheets.Count '从第三张表开始,遍历每一张表 Set mysheet = Workbooks(1).Sheets(si) '表 tableName = mysheet.Range("B1").Value '英文表名 '如果数据库中已存在表,则删除表 'if exists (select * from sysobjects where name='tableName') sql = sql & "if exists (select * from sysobjects where name='" & tableName & "') " & vbCrLf 'drop table tableName sql = sql & " drop table [" & tableName & "] " & vbCrLf sql = sql & "go " & vbCrLf '开始创建表 'create table tableName ( sql = sql & "create table " & tableName & " ( " & vbCrLf comm = "" For i = 5 To mysheet.UsedRange.Rows.Count '从第五行开始遍历所有的列 Dim nameStr As String Dim typeStr As String nameStr = mysheet.Range("B" & i).Value '字段名 typeStr = mysheet.Range("C" & i).Value '数据类型 If typeStr = "int" Or typeStr = "bigint" Or typeStr = "datetime" Or typeStr = "text" Or typeStr = "image" Or typeStr = "tinyint" Then typeStr = mysheet.Range("C" & i).Value '数据类型 Else typeStr = mysheet.Range("C" & i).Value + "(" + mysheet.Range("D" & i).Value + ")" '数据类型 End If commStr = mysheet.Range("F" & i).Value '中文注释 isNull = mysheet.Range("E" & i).Value '是否为空 isPk = mysheet.Range("G" & i).Value '是否主键 sql = sql & " " & nameStr & " " & typeStr If isNull = "否" Then sql = sql + " NOT NULL" End If If isPk = "是" Then sql = sql + " PRIMARY KEY" End If If Len(commStr) > 0 Then comm = comm & vbCrLf & "EXEC sp_addextendedproperty 'MS_Description', N'" & commStr & "','SCHEMA', N'dbo','TABLE', N'" & tableName & "','COLUMN', N'" & nameStr & "';" End If If i < mysheet.UsedRange.Rows.Count Then sql = sql & "," '添加‘,’号 End If sql = sql & vbCrLf Next i '建表完成 sql = sql & ")" & vbCrLf sql = sql & "go" & vbCrLf sql = sql & comm & vbCrLf & "-----Create table " & tableName & " end." & vbCrLf & vbCrLf Next si lvContents = lvContents + sql Open avFilePath For Output As #lvIntFileNum '打开处理文件 Print #lvIntFileNum, (lvContents) '写文件 Close #lvIntFileNum '关闭文件 If notExistTable <> "" Then MsgBox "表" + notExistTable + "不存在!!" End If MsgBox "文件生成成功!文件路径" + avFilePath End Sub 

在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214404.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午4:21
下一篇 2026年3月18日 下午4:21


相关推荐

  • redis 事务

    redis 事务事务 MULTI EXEC DISCARD 和 WATCH 是 Redis 事务相关的命令 事务可以一次执行多个命令 并且带有以下两个重要的保证 事务是一个单独的隔离操作 事务中的所有命令都会序列化 按顺序地执行 事务在执行的过程中 不会被其他客户端发送来的命令请求所打断 事务是一个原子操作 事务中的命令要么全部被执行 要么全部都不执行 EXEC 命令

    2026年3月19日
    2
  • input元素的oninput事件和onchange事件

    input元素的oninput事件和onchange事件input元素的oninput事件和onchange事件1、input元素上绑定事件的三种方式:第一种:直接在元素标签上添加oninput属性,属性值为处理事件函数的调用<inputtype=”text”id=”input”oninput=”handleInput()”></input>functionhandleInput(){ //处理事件代码…

    2022年6月4日
    99
  • 使用百度echarts制作可视化大屏——最终效果和动态数据刷新「建议收藏」

    使用百度echarts制作可视化大屏——最终效果和动态数据刷新「建议收藏」最终效果如下图:接下来就是数据动态刷新了,这个没什么好说的,就是一个$.post的事,传递一个json给自定义的resresh函数就行了。$.post(url,null,function(d){resresh(d);},’json’);总结下来,有以下一些心得:1、大屏里面,设计是第一位的;2、要言之有物;3、能…

    2022年10月12日
    6
  • 最简分式

    最简分式题目内容 分数可以表示为 分子 分母 的形式 编写一个程序 要求用户输入一个分数 然后将其约分为最简分式 最简分式是指分子和分母不具有可以约分的成分了 如 6 12 可以被约分为 1 2 当分子大于分母时 不需要表达为整数又分数的形式 即 11 8 还是 11 8 而当分子分母相等时 仍然表达为 1 1 的分数形式 nbsp 输入格式 输入在一行中给出一个分数 分子和分母中间以斜杠 分隔 如 12

    2026年3月26日
    1
  • Github教程_git安装及使用教程

    Github教程_git安装及使用教程https://www.cnblogs.com/xuxiaoxia/p/9482454.html1、首先要先在github的官网注册一个属于自己的账号。https://github.com/2、注

    2022年8月6日
    5
  • MODBUS规约详解

    MODBUS规约详解MODBUS 是一种主从规约 它允许读或写一个或多个字 16 位 操作 但任何情况下都不支持字节的读写 信息交换是以主站采取主动实现的 即由主机启动交换 除广播命令外 所有的一个完整交换由下行和上行两个报文组成 下行报文 主站发出的一个请求 上行报文 从站发回的一个回答 1 通信参数和传输特性传输方式 异步串行通信方式 MODBUS 规约模式 RTU 模式传输速率 2400bps 9600bp

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号