昨天有人问题mongodb的数据怎么导入到mysql关系型数据库,当时真不知道。今天查询了资料,然后自己实践了一下。在这里记录一下:
这里用到MongoDB的mongoexport,这个功能是将mongodb的数据导成csv文件,然后再讲csv文件当中的数据加载到mysql数据库,实现将mongdb数据库的数据导入到myql当中。
mongoexport -h 10.100.200.198 -u zhuyu -p zhuyu -d ai -c users -f _id,age --type=csv -o /application/mongodb/data/users.csv --authenticationDatabase ai
参数解释:
-h 指定MongoDB所在的服务器
-u 数据库ai的用户名、
-p 这个用户的密码
-d 数据库的名称
-c 集合的名字
-f 集合当中的字段的名称。
--type 这里指定的csv的文件。
-o 指定的文件的保存路径
-- authenticationDatabase 指定的是数据库的名字
在这里指定报了如下的错
Failed: not authorized on ai to execute command { count: "users", query: {} }
看到这个是显示没有执行权限,这里查询权限好像没有;
最后发现,我创建数据库的时候指定了用户名和密码(卧槽)0,所以就登录不了数据库,创建语句如下:
use ai
db.createUser({user:"zhuyu",pwd:"zhuyu",roles:[{role:"dbAdmin",db:"ai"},{role:"readWrite",db:"ai"}]})
加上之后数据导入成功了。
接下来就是将数据导入到mysql数据库。在这里我们需要创建一个同样的数据库,而且创建和MongoDB数据库对应的数据集的表。然后使用如下的命令讲数据导入到mysql当行。命令如下
load data local infile '/application/mongodb/data/users.csv' into table `users` character set utf8 fields terminated by ',' optionally enclosed by '"' lines terminated by '\n' ignore 1 lines;
至此csv文件当中的数据已经导入到mysql数据当中了。