据了解当前mongoDB支持将数据导成两种形式,一是json 二是csv
可以通过./mongoexport --help 来查看参数介绍
-h [ --host ] arg 连接的ip地址
--port arg 端口号
-u [ --username ] arg 用户名
-p [ --password ] arg 密码
-d [ --db ] arg 数据库名
-c [ --collection ] arg 表名
-f [ --fields ] arg 导出的字段(在导出csv的时候必须指定字段 eg:-f name,sex,age)
--fieldFile arg 可以用此参数取代-f (eg: --fieldFile fieldFile.txt)
-q [ --query ] arg 查询条件相当于where 注:这里如果有日期类型的话需先转换成unix_timestamp()
--csv 表示导出为csv
-o [ --out ] arg 导出的文件地址
使用方法如下:
./mongoexport -d admin -c ods_users_dd -o lhc.dat
cat lhc.dat
{ "_id" : 1, "name" : "test1", "sex" : "女" }
{ "_id" : { "$oid" : "526f2a90c9f419b4ff237f7a" }, "name" : "test2" }
./mongoexport -d admin -c ods_users_dd --csv -f name,sex -o lhc.csv
cat lhc.csv
name,sex
"test1","女"
"test2",
导出为csv貌似固定以逗号做为分隔的, 所以如果要导入到hive的话 建议还导出成json格式比较实用,.
我现在的想法就是先将数据以json格式从mongodb中导出, 在hive中建一张只有一个字段的表tb1和一张与mongoDB中相应字段的表tb2, 将数据load进tb1,然后通过get_json_object() 函数insert回tb2.
其实也有想过java 可以本人不熟java 哈哈!!
如果有高手有更好的建议,希望提点一,二.