meo*_*cat 3 mysql sql csv select
这是问题所在.
首先,我在MySQL中创建了一个数据库
CREATE TABLE Users (User TEXT, Pass TEXT, ID TEXT, RegDate TEXT, Email TEXT, Rank TEXT);
Run Code Online (Sandbox Code Playgroud)
我现在有这个数据库
+-----------+------------------+------------+----------+-------------------+------------+
| User | Pass | ID | RegDate | Email | Rank |
+-----------+------------------+------------+----------+-------------------+------------+
Run Code Online (Sandbox Code Playgroud)
我使用导入了一个csv文件(Users.csv)(UTF-8,PlainText)
load data local infile 'Users.csv' into table Users fields terminated by ',' enclosed by '"' lines terminated by '\n';
Run Code Online (Sandbox Code Playgroud)
该文件的内容是
arinerron,asdfasdf,USR0000001,92082015,arinesaugmail,Owner
looy,asdfasdf,USR0000002,92082015,tjesaugmail,User
mooncat39,marsisawesome,USR0000003,92082015,harveyfamilygmail,Owner
Goldy,foxythepirate777,USR0000004,92082015,goldyftwgmail,User
Reid,reidyreid,USR0000005,92082015,reidgmail,Moderator
Bo,bobobobo,USR0000006,92082015,bobogmail,Moderator
Run Code Online (Sandbox Code Playgroud)
它的回应是
Query OK, 6 rows affected (0.00 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0
Run Code Online (Sandbox Code Playgroud)
我跑了命令
SELECT * from Users
Run Code Online (Sandbox Code Playgroud)
我得到了这个回应
+-----------+------------------+------------+----------+-------------------+------------+
| User | Pass | ID | RegDate | Email | Rank |
+-----------+------------------+------------+----------+-------------------+------------+
|erron | asdfasdf | USR0000001 | 92082015 | arinesaugmail | Owner
| | asdfasdf | USR0000002 | 92082015 | tjesaugmail | User
|cat39 | marsisawesome | USR0000003 | 92082015 | harveyfamilygmail | Owner
| | foxythepirate777 | USR0000004 | 92082015 | goldyftwgmail | User
|Reid | reidyreid | USR0000005 | 92082015 | reidgmail | Moderator
| Bo | bobobobo | USR0000006 | 92082015 | bobogmail | Moderator |
+-----------+------------------+------------+----------+-------------------+------------+
Run Code Online (Sandbox Code Playgroud)
这有什么问题?为什么格式不正确?Rank列也搞砸了
我一遍又一遍地重复这些步骤但没有成功.我真的需要尽快解决这个问题.非常感谢!
您的文件具有Windows CR-LF行结尾,而不是Unix LF行结尾.所以这些Rank
字段最后都有一个CR字符.所以发生的事情是最后一个字段被打印为:
Owner<cr><spaces>|
Run Code Online (Sandbox Code Playgroud)
在<cr>
返回到同一行的开头,那么它打印一些空间和|
.这会覆盖该User
字段的开头.
使用
LINES TERMINATED BY '\r\n'
Run Code Online (Sandbox Code Playgroud)
或者dos2unix
在加载之前使用从文件中删除所有CR字符.