前言 最近项目着急着上线一个新版本,因开发时间太短,暂时直接将数据批量导入数据库,产品方只给了个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"
导入excel表格如下: excel语句 具体如下:
=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”),结果是一样的