米鼠商城

多快好省,买软件就上米鼠网

最新项目

人才服务

靠谱的IT人才垂直招聘平台

用Excel公式构造一波SQL

  • qwertt
  • 3
  • 2021-04-15 12:20

须弥零一

用Excel公式构造一波SQL

今天突然接到一个任务,要将Excel中的数据导入到数据库(MySQL)中去。打开Excel一看,好家伙2K+的数据,瞬间头大。当时就想着 “完了,看来得写一小段代码执行一下了“。 还好,当时几个同事在一起,有个小伙伴给了个建议 ”你可以用刚才转Excel中的时间为字符串的办法拼个SQL出来啊!“ 听这么一说,看了一下Excel中数据结构,这完全可以嘛!那就动手写起来

准备工作

这里假设需要导入的表名为 TBL_BUSSINESS_INFO,要需要的数据就用下面的格式,其中Excel中Time列的单元格格式为 常规或者 长日期、短日期、时间这三种中的一种:

将Excel中的日期格式化

因为我们这个更新的数据有时间类型的属性,而MySQL中可以执行类似 UPDATE TBL_BUSSINESS_INFO SET time = "2021-04-09 23:01:05";这样的SQL语句来更新时间属性的列。所以,我们第一步就是需要将Excel中的时间进行格式化。 在Excel中格式化时间可以使用公式:

TEXT(valueformat_text)其中value表示待格式化的值,format_text表示格式的样式。

假如我们要将单元格 A3的时间转换成 年-月-日 时:分:秒的格式,则可以在一个空白单元格中输入以下内容后按回车键:
=TEXT(A3,"yyyy-MM-dd HH:mm:ss")
键入上述公式后,还可以拖动自动填充柄来自动格式化紧邻的单元格,比如下面这样:

拼接多个单元格的内容

Excel中将多个内容拼接在一起的公式是 CONCATENATE,其格式为:

CONCATENATE(text1[text2]...)其中:这个公式是个可变长参数,也就是说你可以添加多个text到函数的参数中去

假如我们要将单元格B1、B2使用@符号连接起来,则可以在一个空白的单元格中输入以下内容后按回车键:
=CONCATENATE(B1, "@", B2)
同样,我们也可以拖动自动填充柄来自动完成紧邻单元格的连接

SQL组装

有了上面时间格式化和单元格内容拼接后,就可以很简单的拼接出我们需要的SQL了。以上面的表名和数据为例,我们可以使用如下的公式组合来拼接我们的SQL:
=CONCATENATE("UPDATE `TBL_BUSSINESS_INFO` SET `status` = ",E3,", `time` = """,TEXT(D3,"yyyy-MM-dd HH:mm:ss"),""" WHERE `id` = ",C3,";")
解读一下。其中, TEXT函数是将日期格式化我们SQL允许的格式, CONCATENATE函数是SQL中的每个部分拼接起来。另外, “”两个双引号在公式中会转义成一个字符串 ,这也就是上面看起来那么多引号的原因。 使用自动填充完毕后,我们就可以复制这些SQL到一个纯文本文件中,这样一个SQL脚本就完成了。至于怎么执行,那就方法很多了。直接sqlplus执行,或使用你习惯的客户端工具都可以。

最后

大多数知识都是单点的,而且大多数人也都掌握了很多孤立的技能。如何能让这些单独的知识点和孤立的技能融合起来其实是一件很棒的事情。这个往大了说就是创新,往小里说会提升效率。 继续吧!骚年~ (●ˇ∀ˇ●)

---- END ----


欢迎关注我的公众号须弥零一”,原创技术文章第一时间推送。



这里给大家推荐一个在线软件复杂项交易平台:米鼠网 https://www.misuland.com

米鼠网自成立以来一直专注于从事软件项目人才招聘软件商城等,始终秉承“专业的服务,易用的产品”的经营理念,以“提供高品质的服务、满足客户的需求、携手共创双赢”为企业目标,为中国境内企业提供国际化、专业化、个性化、的软件项目解决方案,我司拥有一流的项目经理团队,具备过硬的软件项目设计和实施能力,为全国不同行业客户提供优质的产品和服务,得到了客户的广泛赞誉。



如有侵权请联系邮箱(service@misuland.com)

猜你喜欢

评论留言