找到了一个比较好的解决办法是:
访问http://databaseimportscriptor.com/ (在墙外)网站,选择导入格式,选择导入文件,设置表名,就会自动生成sql语句,复制这个语句,在mysql中粘贴执行就可以了。
小数据还行,海量数据可能就不能用这个方法了。支持这几种格式:xlsx, csv, tsv, xml, json,如下图所示:
我用的是导入csv文件,不过在mac里excel文件导出的csv文件分隔符居然是分号,我了个去,后来改成逗号才成功生成我想要的sql语句。另外要注意,导出的csv文件换行符为\r\n,编码格式为gb2312,用Sublime Text3的File 菜单中的“Set File Encoding to"可以修改为UTF8编码。
刚开始尝试了各种导入excel文件的方法,后来又换成csv文件,没一个成功的,可能因为我用的mac,然后我的数据里有中文。
关于mysql不支持插入中文的问题,我尝试了http://my.oschina.net/jackguo/blog/129779 一文中的方法,修改之前我执行命令:mysql> SHOW VARIABLES LIKE 'character%'; 得到的结果为:
+--------------------------+--------------------------------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.6.22-osx10.8-x86_64/share/charsets/ |
+--------------------------+--------------------------------------------------------+
在/usr/local/mysql/my.cnf增加以下内容:
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
再执行mysql> SHOW VARIABLES LIKE 'character%'; 得到的结果为:
+--------------------------+--------------------------------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.6.22-osx10.8-x86_64/share/charsets/ |
+--------------------------+--------------------------------------------------------+
不过尽管如此,我用导入csv文件的命令(在MySQLWorkBench中执行的)还是不成功,命令如下:
LOAD DATA INFILE '/tmp/test.csv'
INTO TABLE studentscores
CHARACTER SET utf8
FIELDS TERMINATED BY ','
lines terminated by '\r\n';
注意:csv文件最好是放在/tmp下面,使用其它路径可能会提示权限不够
出现错误:Error Code: 1366. Incorrect string value: '\xE5\xB0\x8F\xE6\x98\x8E' for column 'student' at row 1
没辙,因为数据少且有重复,我就批量把中文数据替换成英文数据,再重复上面的命令:
还是错误:Error Code: 1265. Data truncated for column 'score' at row 1
百思不得其解,我导出的csv文件一行四个数据,三个逗号分隔符,score是最后一个数据,其后没有逗号而是换行,怎么会是truncated呢?尝试在每行的最后加上逗号,居然能导入成功了……慢,怎么只导入了一行数据?
实在是要疯了,然后我就再找找其它方法,所幸找到了本文开头的方法,就到此为止吧。
参考:
http://stackoverflow.com/questions/3635166/how-to-import-csv-file-to-mysql-table
http://my.oschina.net/open1900/blog/99056
http://codingstandards.iteye.com/blog/604541
http://my.oschina.net/jackguo/blog/129779
http://lvwenhan.com/mac/379.html
http://happyqing.iteye.com/blog/2013554
http://leyteris.iteye.com/blog/793804