前言
最近项目着急着上线一个新版本,因开发时间太短,暂时直接将数据批量导入数据库,产品方只给了个excel表格,what?虽然并没有过多的接触过excel的使用,但是作为一个有志向的程序员,还是要学会怎么使用excel生成sql语句,不然一条一条的写插入sql语句,数据量少的话还可以,几百条的数据能让你写到崩溃。但是用excel生成mysql语句就不同了,熟练的话几分钟就可以完成。
需求
将表格中的数据导入到数据库表中,其中status字段默认为0,is_enable字段默认为1,create_time字段默认为当前时间,room_type字段当数值为6人间时赋值为1,7人间时赋值为2,8人间时赋值为3,start_date字段格式为"yyyy-mm-dd"
=CONCATENATE("insert into ec_student_board(student_id,class_id,student_name,id_card,phone,emergency_phone,room_type,start_date,month_rent,deposit,status,is_enable,create_time) VALUES('"&A2&"','"&B2&"','"&C2&"','"&D2&"','"&E2&"','"&F2&"','"&SWITCH(G2,"6人间","1","7人间","2","8人间","3")&"','"&TEXT(H2,"yyyy-mm-dd")&"','"&I2&"','"&J2&"','"&0&"','"&1&"','"&TEXT(NOW(),"yyyy-mm-dd hh:mm:ss")&"') ;")
按回车键执行完之后就会在第二行的出来sql语句,然后在单元格的右下角下拉就会批量生成sql语句。
接下来把sql语句copy下来就行数据插入就可以了
扩展:
使用到的函数:
TEXT()
text函数表示将数值转化为自己想要的文本格式 语法格=text(value,format_text)Value
为数字值。Format_text 为设置单元格格式中自己所要选用的文本格式。 如:TEXT(H2,“yyyy-mm-dd”)NOW()
获取当前日期和时间
TODAY()
获取当前日期SWITCH()
根据值列表计算一个值(称为表达式),并返回与第一个匹配值对应的结果。如果不匹配,则返回可选默认值
语法:SWITCH(表达式, value1, result1, [default 或 value2, result2],…[default
或 value3, result3])
参数:
表达式:必需,表达式是将与 value1…value126
比较的值(如数字、日期或某些文本)。
value1:必需,要与表达式比较的第一个值。
result1:必需,当 value1
参数与表达式匹配时,返回的第一个结果。 [default]:可选,在表达式中没有找到匹配值时返回的默认值。
[value2…valueN]:可选,要与表达式比较的第 2 至第 126 个值。
[result2…resultN]:可选,value 参数与表达式匹配时,返回的的第 2 至第 126 个结果IFS()
检查是否满足一个或多个条件,且返回符合第一个 TRUE 条件的值
语法:IFS(logical_test1,
value_if_true1, [logical_test2, value_if_true2], [logical_test3,
value_if_true3],…)
参数: logical_test1:必需,计算结果为 TRUE 或 FALSE 的条件。
value_if_true1:必需,当 logical_test1 的计算结果为 TRUE 时要返回结果。可以为空。
[logical_test2…logical_test127]:可选,计算结果为 TRUE 或 FALSE 的条件。
[value_if_true2…value_if_true127]:可选,当 logical_testN 的计算结果为 TRUE
时要返回结果。每个 value_if_trueN 对应于一个条件 logical_testN。可以为空。所以例子中的语法也可以用IFS(G2=“6人间”,“1”,G2=“7人间”,“2”,G2=“8人间”,“3”),结果是一样的