我没有学过MYSQL,只是在java里接触了一点,问题来了
我把数据库的字段类型都定义成varchar(50),然后用下面的语句生成一个文本文件for(int i=1;i<=50000;++i)
pw.println("哈哈哈哈哈"+i+"\t"+"哈哈哈哈哈"+i+"\t"+"哈哈哈哈哈"+i+"\t"+"哈哈哈哈哈"+i+"\t"+"哈哈哈哈哈"+i);
pw.close();把这个文本文件导入到数据库里,数据库里居然是50000条空记录,连null都没有,如下| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
.......但是如果把引号的内容去掉,只留一个i的话,导入数据正常。
这是咋回事呢?
我把数据库的字段类型都定义成varchar(50),然后用下面的语句生成一个文本文件for(int i=1;i<=50000;++i)
pw.println("哈哈哈哈哈"+i+"\t"+"哈哈哈哈哈"+i+"\t"+"哈哈哈哈哈"+i+"\t"+"哈哈哈哈哈"+i+"\t"+"哈哈哈哈哈"+i);
pw.close();把这个文本文件导入到数据库里,数据库里居然是50000条空记录,连null都没有,如下| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
.......但是如果把引号的内容去掉,只留一个i的话,导入数据正常。
这是咋回事呢?
哈哈哈哈哈1 哈哈哈哈哈1 哈哈哈哈哈1 哈哈哈哈哈1 哈哈哈哈哈1
哈哈哈哈哈2 哈哈哈哈哈2 哈哈哈哈哈2 哈哈哈哈哈2 哈哈哈哈哈2
哈哈哈哈哈3 哈哈哈哈哈3 哈哈哈哈哈3 哈哈哈哈哈3 哈哈哈哈哈3
哈哈哈哈哈4 哈哈哈哈哈4 哈哈哈哈哈4 哈哈哈哈哈4 哈哈哈哈哈4
哈哈哈哈哈5 哈哈哈哈哈5 哈哈哈哈哈5 哈哈哈哈哈5 哈哈哈哈哈5
哈哈哈哈哈6 哈哈哈哈哈6 哈哈哈哈哈6 哈哈哈哈哈6 哈哈哈哈哈6
哈哈哈哈哈7 哈哈哈哈哈7 哈哈哈哈哈7 哈哈哈哈哈7 哈哈哈哈哈7
哈哈哈哈哈8 哈哈哈哈哈8 哈哈哈哈哈8 哈哈哈哈哈8 哈哈哈哈哈8
哈哈哈哈哈9 哈哈哈哈哈9 哈哈哈哈哈9 哈哈哈哈哈9 哈哈哈哈哈9
哈哈哈哈哈10 哈哈哈哈哈10 哈哈哈哈哈10 哈哈哈哈哈10 哈哈哈哈哈10
哈哈哈哈哈11 哈哈哈哈哈11 哈哈哈哈哈11 哈哈哈哈哈11 哈哈哈哈哈11
哈哈哈哈哈12 哈哈哈哈哈12 哈哈哈哈哈12 哈哈哈哈哈12 哈哈哈哈哈12
哈哈哈哈哈13 哈哈哈哈哈13 哈哈哈哈哈13 哈哈哈哈哈13 哈哈哈哈哈13
哈哈哈哈哈14 哈哈哈哈哈14 哈哈哈哈哈14 哈哈哈哈哈14 哈哈哈哈哈14
哈哈哈哈哈15 哈哈哈哈哈15 哈哈哈哈哈15 哈哈哈哈哈15 哈哈哈哈哈15
哈哈哈哈哈16 哈哈哈哈哈16 哈哈哈哈哈16 哈哈哈哈哈16 哈哈哈哈哈16
哈哈哈哈哈17 哈哈哈哈哈17 哈哈哈哈哈17 哈哈哈哈哈17 哈哈哈哈哈17
哈哈哈哈哈18 哈哈哈哈哈18 哈哈哈哈哈18 哈哈哈哈哈18 哈哈哈哈哈18
哈哈哈哈哈19 哈哈哈哈哈19 哈哈哈哈哈19 哈哈哈哈哈19 哈哈哈哈哈19
哈哈哈哈哈20 哈哈哈哈哈20 哈哈哈哈哈20 哈哈哈哈哈20 哈哈哈哈哈20导入命令是 LOAD DATA LOCAL INFILE "C:/haha.txt" INTO TABLE Jiangningshuiwu;
我换成英文后能导入了,难道是汉字编码问题吗
LOAD DATA LOCAL INFILE "C:/haha.txt" INTO TABLE Jiangningshuiwu;
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
.......连null都没有
mysql> set names 'gbk';
Query OK, 0 rows affected (0.00 sec)mysql> load data local infile "c:/haha.txt" into table jiangningshuiwu charset 'gbk';
Query OK, 20 rows affected (0.03 sec)
Records: 20 Deleted: 0 Skipped: 0 Warnings: 0mysql> select * from jiangningshuiwu;
+--------------+--------------+--------------+--------------+---------------+
| col1 | col2 | col3 | col4 | col5 |
+--------------+--------------+--------------+--------------+---------------+
| 哈哈哈哈1 | 哈哈哈哈哈1 | 哈哈哈哈哈1 | 哈哈哈哈哈1 | 哈哈哈哈哈1
| 哈哈哈哈2 | 哈哈哈哈哈2 | 哈哈哈哈哈2 | 哈哈哈哈哈2 | 哈哈哈哈哈2
| 哈哈哈哈3 | 哈哈哈哈哈3 | 哈哈哈哈哈3 | 哈哈哈哈哈3 | 哈哈哈哈哈3
| 哈哈哈哈4 | 哈哈哈哈哈4 | 哈哈哈哈哈4 | 哈哈哈哈哈4 | 哈哈哈哈哈4
| 哈哈哈哈5 | 哈哈哈哈哈5 | 哈哈哈哈哈5 | 哈哈哈哈哈5 | 哈哈哈哈哈5
| 哈哈哈哈6 | 哈哈哈哈哈6 | 哈哈哈哈哈6 | 哈哈哈哈哈6 | 哈哈哈哈哈6
| 哈哈哈哈7 | 哈哈哈哈哈7 | 哈哈哈哈哈7 | 哈哈哈哈哈7 | 哈哈哈哈哈7
| 哈哈哈哈8 | 哈哈哈哈哈8 | 哈哈哈哈哈8 | 哈哈哈哈哈8 | 哈哈哈哈哈8
| 哈哈哈哈9 | 哈哈哈哈哈9 | 哈哈哈哈哈9 | 哈哈哈哈哈9 | 哈哈哈哈哈9
|哈哈哈哈哈10 | 哈哈哈哈哈10 | 哈哈哈哈哈10 | 哈哈哈哈哈10 | 哈哈哈哈哈10
|哈哈哈哈哈11 | 哈哈哈哈哈11 | 哈哈哈哈哈11 | 哈哈哈哈哈11 | 哈哈哈哈哈11
|哈哈哈哈哈12 | 哈哈哈哈哈12 | 哈哈哈哈哈12 | 哈哈哈哈哈12 | 哈哈哈哈哈12
|哈哈哈哈哈13 | 哈哈哈哈哈13 | 哈哈哈哈哈13 | 哈哈哈哈哈13 | 哈哈哈哈哈13
|哈哈哈哈哈14 | 哈哈哈哈哈14 | 哈哈哈哈哈14 | 哈哈哈哈哈14 | 哈哈哈哈哈14
|哈哈哈哈哈15 | 哈哈哈哈哈15 | 哈哈哈哈哈15 | 哈哈哈哈哈15 | 哈哈哈哈哈15
|哈哈哈哈哈16 | 哈哈哈哈哈16 | 哈哈哈哈哈16 | 哈哈哈哈哈16 | 哈哈哈哈哈16
|哈哈哈哈哈17 | 哈哈哈哈哈17 | 哈哈哈哈哈17 | 哈哈哈哈哈17 | 哈哈哈哈哈17
|哈哈哈哈哈18 | 哈哈哈哈哈18 | 哈哈哈哈哈18 | 哈哈哈哈哈18 | 哈哈哈哈哈18
|哈哈哈哈哈19 | 哈哈哈哈哈19 | 哈哈哈哈哈19 | 哈哈哈哈哈19 | 哈哈哈哈哈19
|哈哈哈哈哈20 | 哈哈哈哈哈20 | 哈哈哈哈哈20 | 哈哈哈哈哈20 | 哈哈哈哈哈20
+--------------+--------------+--------------+--------------+---------------+
20 rows in set (0.00 sec)2. set names 'latin1' 并且load in file charset 'latin1'
mysql> set names 'latin1';
Query OK, 0 rows affected (0.00 sec)mysql> load data local infile "c:/haha.txt" into table jiangningshuiwu charset 'latin1';
Query OK, 20 rows affected (0.05 sec)
Records: 20 Deleted: 0 Skipped: 0 Warnings: 0mysql> select * from jiangningshuiwu;
+--------------+--------------+--------------+--------------+---------------+
| col1 | col2 | col3 | col4 | col5 |
+--------------+--------------+--------------+--------------+---------------+
| 哈哈哈哈1 | 哈哈哈哈哈1 | 哈哈哈哈哈1 | 哈哈哈哈哈1 | 哈哈哈哈哈1
| 哈哈哈哈2 | 哈哈哈哈哈2 | 哈哈哈哈哈2 | 哈哈哈哈哈2 | 哈哈哈哈哈2
| 哈哈哈哈3 | 哈哈哈哈哈3 | 哈哈哈哈哈3 | 哈哈哈哈哈3 | 哈哈哈哈哈3
| 哈哈哈哈4 | 哈哈哈哈哈4 | 哈哈哈哈哈4 | 哈哈哈哈哈4 | 哈哈哈哈哈4
| 哈哈哈哈5 | 哈哈哈哈哈5 | 哈哈哈哈哈5 | 哈哈哈哈哈5 | 哈哈哈哈哈5
| 哈哈哈哈6 | 哈哈哈哈哈6 | 哈哈哈哈哈6 | 哈哈哈哈哈6 | 哈哈哈哈哈6
| 哈哈哈哈7 | 哈哈哈哈哈7 | 哈哈哈哈哈7 | 哈哈哈哈哈7 | 哈哈哈哈哈7
| 哈哈哈哈8 | 哈哈哈哈哈8 | 哈哈哈哈哈8 | 哈哈哈哈哈8 | 哈哈哈哈哈8
| 哈哈哈哈9 | 哈哈哈哈哈9 | 哈哈哈哈哈9 | 哈哈哈哈哈9 | 哈哈哈哈哈9
|哈哈哈哈哈10 | 哈哈哈哈哈10 | 哈哈哈哈哈10 | 哈哈哈哈哈10 | 哈哈哈哈哈10
|哈哈哈哈哈11 | 哈哈哈哈哈11 | 哈哈哈哈哈11 | 哈哈哈哈哈11 | 哈哈哈哈哈11
|哈哈哈哈哈12 | 哈哈哈哈哈12 | 哈哈哈哈哈12 | 哈哈哈哈哈12 | 哈哈哈哈哈12
|哈哈哈哈哈13 | 哈哈哈哈哈13 | 哈哈哈哈哈13 | 哈哈哈哈哈13 | 哈哈哈哈哈13
|哈哈哈哈哈14 | 哈哈哈哈哈14 | 哈哈哈哈哈14 | 哈哈哈哈哈14 | 哈哈哈哈哈14
|哈哈哈哈哈15 | 哈哈哈哈哈15 | 哈哈哈哈哈15 | 哈哈哈哈哈15 | 哈哈哈哈哈15
|哈哈哈哈哈16 | 哈哈哈哈哈16 | 哈哈哈哈哈16 | 哈哈哈哈哈16 | 哈哈哈哈哈16
|哈哈哈哈哈17 | 哈哈哈哈哈17 | 哈哈哈哈哈17 | 哈哈哈哈哈17 | 哈哈哈哈哈17
|哈哈哈哈哈18 | 哈哈哈哈哈18 | 哈哈哈哈哈18 | 哈哈哈哈哈18 | 哈哈哈哈哈18
|哈哈哈哈哈19 | 哈哈哈哈哈19 | 哈哈哈哈哈19 | 哈哈哈哈哈19 | 哈哈哈哈哈19
|哈哈哈哈哈20 | 哈哈哈哈哈20 | 哈哈哈哈哈20 | 哈哈哈哈哈20 | 哈哈哈哈哈20
+--------------+--------------+--------------+--------------+---------------+
20 rows in set (0.00 sec)3. 把你的文件本身从ascii格式改为utf8 without BOM(使用notepad++)
然后:
load data local infile "c:/haha.txt" into table jiangningshuiwu; (也可以加上charset 'utf8')总之根本原因是load local infile里用的字符集不一定就是你set names里指定的字符集。它的默认字符集应该是数据库本身的内部字符集。
SHOW CREATE TABLE XXX
贴结果
在统一的字符集下重新建立表、库,导入数据