環境
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。
請問如何解決這個型別強制被轉換的問題。
uj5u.com熱心網友回復:
沒弄過,幫頂!
uj5u.com熱心網友回復:
// 獲取到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);
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/87724.html
標籤:高級技術
上一篇:oracle11 socket 通訊,記憶體不斷增加
下一篇:Orcale登陸問題
