ogg for big data 从mysql同步到mongo的问题

chinesern 2016-12-27 04:25:19
环境

ogg 12.2.0


源库 :mysql
表结构: dh
+-------+-------------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+-------------------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(50) | YES | | NULL | |
| dt | datetime | YES | | CURRENT_TIMESTAMP | |
+-------+-------------+------+-----+-------------------+-------+


源端配置 抽取进程 extract 并且 pump 到目标端的对应目录

目标:mongo
参数文件:
[root@host1 ggs]# cd ./dirprm
[root@host1 dirprm]# ls
mgr.prm mongo.props rmongo.prm
[root@host1 dirprm]# more mongo.props

gg.handlerlist=mongodb

gg.handler.mongodb.type=oracle.goldengate.delivery.handler.mongodb.MongoDBHandler
gg.handler.mongodb.clientURI=mongodb://localhost:27017/
#gg.handler.mongodb.clientURI=mongodb://ogg:ogg@localhost:27017/?authSource=admin&authMechanism=SCRAM-SHA-1

gg.handler.mongodb.mode=tx

goldengate.userexit.timestamp=utc
goldengate.userexit.writers=javawriter
javawriter.stats.display=TRUE
javawriter.stats.full=TRUE

gg.log=log4j
gg.log.level=DEBUG

gg.report.time=30sec

##CHANGE THE PATH BELOW

gg.classpath=/ggs/lib/mongo-java-driver-3.2.2.jar:/ggs/mongo/bin/ogg-mongodb-adapter-1.0.jar:


javawriter.bootoptions=-Xmx512m -Xms32m -Djava.class.path=ggjava/ggjava.jar:


[root@host1 dirprm]# more rmongo.rpm
rmongo.rpm: No such file or directory
[root@host1 dirprm]# more rmongo.prm
REPLICAT rmongo
-- Trail file for this example is located in "AdapterExamples/trail" directory
-- Command to add REPLICAT
-- add replicat rmongo, exttrail AdapterExamples/trail/tr
TARGETDB LIBFILE libggjava.so SET property=dirprm/mongo.props
REPORTCOUNT EVERY 1 MINUTES, RATE
GROUPTRANSOPS 10000



MAP test.dh, TARGET test.dh;

问题:
表dh的同步实现了,但是mongo里的collection字段全变成 string 类型了, 包括datetime 和 int。

请问如何解决这个类型强制被转换的问题。





...全文
974 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
big_bow 2017-07-22
  • 打赏
  • 举报
回复
// 获取到mongodb的文件信息 Document document = new Document(getFormattedData(tableMetaData, op, false, false).getMap()); // 修改字段数据类型 ArrayList<ColumnMetaData> col = tableMetaData.getColumnMetaData(); for (ColumnMetaData columnMetaData : col){ if ("NUMERIC".equals(columnMetaData.getDataType().toString())){ String filed = document.getString(columnMetaData.getColumnName()); if (filed != null){ if (!"NULL".equals(filed)){ Double amount = Double.valueOf(filed); document.put(columnMetaData.getColumnName(),amount); } } } }
H_Gragon 2016-12-28
  • 打赏
  • 举报
回复
没弄过,帮顶!

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧