MySQL load 从文件读入数据提示ERROR 1148

2014-11-24 17:12:07 · 作者: · 浏览: 0

MySQL创建数据表


CREATE TABLE weblogs(
md5 varchar(32),
url varchar(64),
request_date date,
request_time time,
ip varchar(15))


在使用如下命令导入时会报错:


提示这个版本的mysql不支持这样导入


解决办法:http://dev.mysql.com/doc/refman/5.5/en/load-data-local.html


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> use realworld;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A


Database changed
mysql> LOAD DATA LOCAL INFILE '/home/hadoop/weblog_entries.txt' INTO table weblogs FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';
Query OK, 3000 rows affected (1.17 sec)
Records: 3000 Deleted: 0 Skipped: 0 Warnings: 0


在连接mysql的时候加上--local-infile的参数 然后导入即可


或者使用如下方式:


mysql -u [youruser] -h [youraddress] -p [yourpassword] [yourdatabase] --local-infile=1 -e "[yourcmd]"


mysql -uroot -p123456 realworld --local-infile=1 -e "LOAD DATA local INFILE '/home/hadoop/weblog_entries.txt' INTO table weblogs FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'"


原因分析:根据官方的解释是mysql在编译的时候默认把local-infile的参数设为0,就是关闭了从本地load的功能,所以如果需要使用只能自己打开 通过链接的时候把该参数设置为1的方式


另外Windows下面的换行符和linux的是不一样的


Windows换行是\r\n,十六进制数值是:0D0A。


Linux换行是\n,十六进制数值是:0A


--------------------------------------分割线 --------------------------------------


--------------------------------------分割线 --------------------------------------