Mac中将MongoDB数据导入MySQL8

本文分享了从MongoDB导出数据并导入MySQL的过程及遇到的问题。使用mongoexport工具将数据转换为JSON格式,通过LOAD DATA INFILE命令导入MySQL,解决secure-file-priv限制、数据过长及列数不匹配等常见问题。

之前爬去的一些数据,想将数据从mongodb导入到MySQL中,记录一下遇到了一系列问题.

首先使用mongodb自带的mongoexport 工具将数据导出为json格式

mongoexport --host 127.0.0.1 --port 27017 --username spider --password spider987COM --collection spider --db toutiao_app_article --out /Users/zhangsf/data/ifeng/toutiao_app_spider.json

解释:

--host 后的 localhost:要导出数据库 ip

--port 后的 27017:要导出的实例节点端口号

--username 后的 zhangsf:数据库用户名

--password 后的 zhangsf:数据库用户密码

--collection 后的 spider:要导出的表名

--db 后的 zhangsf:要导出的表所在数据库名

--out 后的 /Users/zhangsf/data/ifeng/spider.json 

:要导出的文件路径(默认为当前文件夹)

导出文件之后,再进入MySQL中使用MySQL8支持的直接导数据的命令

进入MySQL 

mysql -u root -p

create database spider_article DEFAULT CHARACTER SET utf8;

use  spider_article

根据mongodb中的数据结构创建table

create table article(
_id varchar(50),
book_title varchar(50),
book_text text,
concurrent_url varchar(100),
category varchar(20),
create_time varchar(100)
);

再就是直接使用工具

LOAD DATA INFILE "/private/tmp/spider_article.json" REPLACE INTO TABLE article FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n';

将数据导入.

最终

只成功了一部分,具体问题后续再看.

遇到的问题:

第一个就是:

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

Mac中的解决方法就是, 

这个问题解决  参考上一篇写的  Mac上MySQL出现secure-file-priv为null

第二个问题就是:

ERROR 1406 (22001): Data too long for column 'book_text' at row 1

发现使用varchar根本满足不了这个文本大小的需求,最终选用了text

第三个问题:

ERROR 1262 (01000): Row 1 was truncated; it contained more data than there were input columns

这个错误的原因是数据文件中的列数跟 MySQL 数据表字段数目没有完全匹配,并且 sql_mode 设为 strict 模式。

先查询当前的sql_mode,再设置sql_mode的模式。

到此为止,数据导入了一半

可能格式有问题,后续调整格式,再重新转,先就记录这么多了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangvalue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值