笔者介绍了一个将excel中的数据导入mysql的简单方法。
这个方法最简单但不是傻瓜式的方法,需要你对excel和mysql都有一点点了解。
当然,我在最后提供了一个作为例子的excel文件,但仍然需要你会写mysql的insert语句,这样才能调试可能出现的错误。
1.在需要导入的数据最后一列,写入一个excel公式(例子中是“sql”下面的单元格,“sql”是不必要的,仅仅是为了看起来方便)。
=concatenate(insert into employee(name,birthday,email,hobby)values(',rc[-4],',',rc[-3],',',rc[-2],',',rc[-1],');)
这样就会生成insert语句,正如你在例子excel文件中看到的(当你单击sql下面的单元格时,可以看到公式)。
这个实际上是使用了excel的concatenate字符串连接函数,将数据生成你需要的sql语句。rc[-2]是从最后一列(不包括该列)往前数的第二列。
2.将sql下面单元格的公式复制到该列的其它单元格,这样可以看到生成了所需要的所有sql语句。
3.将最后一列选中,复制数据到一个文本文件,将该文本文件另存为一个.sql文件(别忘了删除第一行的“sql”)。
4.能够运行sql文件的工具有很多,运行这个文件就可以了。如果没有工具,参考 在windows下批量执行mysql脚本(http://www.albertsong.com/read-21.html)。
使用上面的方法,你需要知道什么样的insert语句对于mysql来说是正确的。
最常见的是日期的格式,如果不转换成字符串,用上面的方法会生成一个整数,这样插入mysql后就不对了。
因此上面的公式改成
=concatenate(insert into employee(name,birthday,email,hobby)values(',rc[-4],',',text(rc[-3],yyyy-mm-dd hh:mm:ss),',',rc[-2],',',rc[-1],');)
这里用到了text函数来将日期格式化成mysql能接受的日期字符串。
具体请参考例子。excel2mysql.rar
文件说明如下:
doc.txt--本文
sqlgen.xls--excel例子文件
create.sql--建表语句
insert.sql--生成的insert语句
function.txt--需要在excel中使用的函数
写了这么多,实际上就一句话:使用excel的concatenate函数生成sql语句并执行。
如果懂一点儿vba可以直接生成insert.sql文件