这不是最好的办法,但对于只导一次的数据,却是一个有效的方法,虽然非常麻烦。
microsoft office/excel 在日常的应用中,还是相当广泛,但它不是个好工具。把excel导入mysql表,是一个无法忍受的麻烦工作;尤其是表格里带大字段的列,使用phpMyAdmin导入经常是失败的。如果你也遇到这种问题,可以尝试以下方法。
1. 在excel里选中所有数据列,执行替换,把 ‘ 替换成 \’ (把单引号替换成斜杠加单引号,即mysql中的单引号转义)
2. 在excel表格里插入一列,根据mysql表结构,写个excel公式,其实只是个字符串拼接操作,目的是构造一个mysql插入语句,形式大至如下
="insert into `article`(cat_id,title,content,add_time) values('"&D3&"','"&A3&"','"&B3&"',1330516016);"
3. 复制该列,并作为新列粘贴值到旁边(选择性粘贴);或者粘贴到新表格里也可以。
4. 除了刚才的新数据列,把其它列全部删掉,另存为unicode文本格式(实际是utf-16的csv)。
5. 使用记事本打/或其它纯文本编辑工具打开该文件,另存为utf-8编码。(windows下所谓的unicode格式实际是utf-16,这是M$在误导大家)
6. 使用editplus等文本编辑工具,打开该utf-8格式的文件,查找替换,把 “” 替换成 ” (两个连续单引号替换成一个单引号); 因为M$的CSV使用两个双引号来转义双引号,这是个非常愚蠢的约定!MS/windows很多地方都是这样愚蠢的做双字符转义!而标准的csv使用斜杠做特殊字符转义的。
7. 把 “\n\” (行尾双引号与下一行的双引号) 替换成 \n (亦即把行首及行尾的双引号删掉)
8. 把文件最开头及文件最末尾的双引号删掉。
9. 现在就是可以在mysql里执行的insert插入语句了,拿到mysql里执行吧。如果数据量大,推荐使用mysql命令行下导入,连接时最好加上参数 –default-character-set=utf8 ,这样不容易出现乱码。
mysql -uroot -p --default-character-set=utf8