环境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.propsgg.handlerlist=mongodbgg.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-1gg.handler.mongodb.mode=txgoldengate.userexit.timestamp=utc
goldengate.userexit.writers=javawriter
javawriter.stats.display=TRUE
javawriter.stats.full=TRUEgg.log=log4j
gg.log.level=DEBUGgg.report.time=30sec##CHANGE THE PATH BELOWgg.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 10000MAP test.dh, TARGET test.dh;问题:
表dh的同步实现了,但是mongo里的collection字段全变成 string 类型了, 包括datetime 和 int。请问如何解决这个类型强制被转换的问题。
源库 :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.propsgg.handlerlist=mongodbgg.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-1gg.handler.mongodb.mode=txgoldengate.userexit.timestamp=utc
goldengate.userexit.writers=javawriter
javawriter.stats.display=TRUE
javawriter.stats.full=TRUEgg.log=log4j
gg.log.level=DEBUGgg.report.time=30sec##CHANGE THE PATH BELOWgg.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 10000MAP test.dh, TARGET test.dh;问题:
表dh的同步实现了,但是mongo里的collection字段全变成 string 类型了, 包括datetime 和 int。请问如何解决这个类型强制被转换的问题。
解决方案 »
- oracle存储过程与分区
- 使用分析函数LAG("MONTH", 12, 0)做同期比较,但是某些月份缺失怎么办?
- 设置列宽问题
- oracle 1千万数据量更新问题不会的不要乱说 。。
- 急啊 SELECT CASE
- 我的电脑里d:/test/test.txt里存着一段代码,我想用sql*plus执行它,怎么弄哦??
- 这个对您来说不难。。。。
- 关于pro*c中加入pl/sql trigger 触发器 编译错误问题
- 如何判断一个Varchar2是不是数字字符串?
- PowerDesigner在哪里下载?给个链接好吗?谢谢!
- oracle数据从windows 迁移到linux
- 数据库ora-01017的解决办法
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);
}
} }
}