DataX工具部署与使用(PostgreSQL to Oracle)
目录:
- 一、准备环境
- (1)安装JDK
- (2)检查Python版本
- (3)DataX 解压及测试
- 二、同步测试
- 1、配置清单
- 2、操作示例
- (1)同步测试环境
- (2)准备测试表(postgresql)
- (3)准备测试表(Oracle)
- (4)创建并编辑json文件
- (5)执行json配置文件
一、准备环境
1、创建用户组和目录
groupadd -g 1500 datax
useradd -g datax -u 1500 datax
mkdir /datax
chown datax:datax /datax
安装datax两端服务器都可以,但是要保证网络畅通
2、系统环境
- Linux
- JDK(1.8以上,推荐1.8)
- Python(2或3都可以)
- Apache Maven 3.x (Compile DataX)(本文使用datax工具包直接解压,未采用编译方式)
(1)安装JDK
安装JDK(1.8.0_361)
# rpm -ivh jdk-8u361-linux-x64.rpm
warning: jdk-8u361-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing... ################################# [100%]
Updating / installing...1:jdk1.8-2000:1.8.0_361-fcs ################################# [100%]
Unpacking JAR files...tools.jar...plugin.jar...javaws.jar...deploy.jar...rt.jar...jsse.jar...charsets.jar...localedata.jar...
检查JDK版本
# java -version
java version "1.8.0_361"
Java(TM) SE Runtime Environment (build 1.8.0_361-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)
(2)检查Python版本
# python -V
Python 2.7.5
我这边使用的是linux7自带的python版本
(3)DataX 解压及测试
Download :DataX下载地址,上传到/datax
目录
解压缩:
# tar -zxvf datax.tar.gz
自检脚本:
python {YOUR_DATAX_HOME}/bin/datax.py {YOUR_DATAX_HOME}/job/job.json
示例:
# python /datax/datax/bin/datax.py /datax/datax/job/job.jsonDataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.2023-10-10 11:31:06.527 [main] INFO MessageSource - JVM TimeZone: GMT+08:00, Locale: zh_CN
2023-10-10 11:31:06.531 [main] INFO MessageSource - use Locale: zh_CN timeZone: sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
2023-10-10 11:31:06.571 [main] INFO VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
2023-10-10 11:31:06.577 [main] INFO Engine - the machine info => osInfo: Oracle Corporation 1.8 25.361-b09jvmInfo: Linux amd64 5.4.17-2011.6.2.el7uek.x86_64cpu num: 4totalPhysicalMemory: -0.00GfreePhysicalMemory: -0.00GmaxFileDescriptorCount: -1currentOpenFileDescriptorCount: -1GC Names [PS MarkSweep, PS Scavenge]MEMORY_NAME | allocation_size | init_size PS Eden Space | 256.00MB | 256.00MB Code Cache | 240.00MB | 2.44MB Compressed Class Space | 1,024.00MB | 0.00MB PS Survivor Space | 42.50MB | 42.50MB PS Old Gen | 683.00MB | 683.00MB Metaspace | -0.00MB | 0.00MB 2023-10-10 11:31:06.595 [main] INFO Engine -
{"content":[{"reader":{"name":"streamreader","parameter":{"column":[{"type":"string","value":"DataX"},{"type":"long","value":19890604},{"type":"date","value":"1989-06-04 00:00:00"},{"type":"bool","value":true},{"type":"bytes","value":"test"}],"sliceRecordCount":100000}},"writer":{"name":"streamwriter","parameter":{"encoding":"UTF-8","print":false}}}],"setting":{"errorLimit":{"percentage":0.02,"record":0},"speed":{"channel":1}}
}2023-10-10 11:31:06.615 [main] WARN Engine - prioriy set to 0, because NumberFormatException, the value is: null
2023-10-10 11:31:06.617 [main] INFO PerfTrace - PerfTrace traceId=job_-1, isEnable=false, priority=0
2023-10-10 11:31:06.617 [main] INFO JobContainer - DataX jobContainer starts job.
2023-10-10 11:31:06.620 [main] INFO JobContainer - Set jobId = 0
2023-10-10 11:31:06.641 [job-0] INFO JobContainer - jobContainer starts to do prepare ...
2023-10-10 11:31:06.643 [job-0] INFO JobContainer - DataX Reader.Job [streamreader] do prepare work .
2023-10-10 11:31:06.643 [job-0] INFO JobContainer - DataX Writer.Job [streamwriter] do prepare work .
2023-10-10 11:31:06.643 [job-0] INFO JobContainer - jobContainer starts to do split ...
2023-10-10 11:31:06.643 [job-0] INFO JobContainer - Job set Channel-Number to 1 channels.
2023-10-10 11:31:06.644 [job-0] INFO JobContainer - DataX Reader.Job [streamreader] splits to [1] tasks.
2023-10-10 11:31:06.645 [job-0] INFO JobContainer - DataX Writer.Job [streamwriter] splits to [1] tasks.
2023-10-10 11:31:06.667 [job-0] INFO JobContainer - jobContainer starts to do schedule ...
2023-10-10 11:31:06.674 [job-0] INFO JobContainer - Scheduler starts [1] taskGroups.
2023-10-10 11:31:06.677 [job-0] INFO JobContainer - Running by standalone Mode.
2023-10-10 11:31:06.685 [taskGroup-0] INFO TaskGroupContainer - taskGroupId=[0] start [1] channels for [1] tasks.
2023-10-10 11:31:06.688 [taskGroup-0] INFO Channel - Channel set byte_speed_limit to -1, No bps activated.
2023-10-10 11:31:06.688 [taskGroup-0] INFO Channel - Channel set record_speed_limit to -1, No tps activated.
2023-10-10 11:31:06.701 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[0] attemptCount[1] is started
2023-10-10 11:31:07.003 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[0] is successed, used[304]ms
2023-10-10 11:31:07.004 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] completed it's tasks.
2023-10-10 11:31:16.696 [job-0] INFO StandAloneJobContainerCommunicator - Total 100000 records, 2600000 bytes | Speed 253.91KB/s, 10000 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.050s | All Task WaitReaderTime 0.060s | Percentage 100.00%
2023-10-10 11:31:16.696 [job-0] INFO AbstractScheduler - Scheduler accomplished all tasks.
2023-10-10 11:31:16.696 [job-0] INFO JobContainer - DataX Writer.Job [streamwriter] do post work.
2023-10-10 11:31:16.697 [job-0] INFO JobContainer - DataX Reader.Job [streamreader] do post work.
2023-10-10 11:31:16.697 [job-0] INFO JobContainer - DataX jobId [0] completed successfully.
2023-10-10 11:31:16.698 [job-0] INFO HookInvoker - No hook invoked, because base dir not exists or is a file: /datax/datax/hook
2023-10-10 11:31:16.700 [job-0] INFO JobContainer - [total cpu info] => averageCpu | maxDeltaCpu | minDeltaCpu -1.00% | -1.00% | -1.00%[total gc info] => NAME | totalGCCount | maxDeltaGCCount | minDeltaGCCount | totalGCTime | maxDeltaGCTime | minDeltaGCTime PS MarkSweep | 0 | 0 | 0 | 0.000s | 0.000s | 0.000s PS Scavenge | 0 | 0 | 0 | 0.000s | 0.000s | 0.000s 2023-10-10 11:31:16.700 [job-0] INFO JobContainer - PerfTrace not enable!
2023-10-10 11:31:16.701 [job-0] INFO StandAloneJobContainerCommunicator - Total 100000 records, 2600000 bytes | Speed 253.91KB/s, 10000 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.050s | All Task WaitReaderTime 0.060s | Percentage 100.00%
2023-10-10 11:31:16.705 [job-0] INFO JobContainer -
任务启动时刻 : 2023-10-10 11:31:06
任务结束时刻 : 2023-10-10 11:31:16
任务总计耗时 : 10s
任务平均流量 : 253.91KB/s
记录写入速度 : 10000rec/s
读出记录总数 : 100000
读写失败总数 : 0
自检脚本无法通过报错处理:https://developer.aliyun.com/ask/376622?spm=a2c6h.13148508.0.0.1d734f0eKYBCG7
二、同步测试
1、配置清单
在两个不同数据库之间使用datax数据迁移可以通过命令查看配置模板: python datax.py -r {Sourcedb_READER} -w {Targetdb_WRITER}
示例:查看PostgreSQL到Oracle数据传输json文件模板
# python /datax/datax/bin/datax.py -r postgresqlreader -w oraclewriterDataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.Please refer to the postgresqlreader document:https://github.com/alibaba/DataX/blob/master/postgresqlreader/doc/postgresqlreader.md Please refer to the oraclewriter document:https://github.com/alibaba/DataX/blob/master/oraclewriter/doc/oraclewriter.md Please save the following configuration as a json file and usepython {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json
to run the job.{"job": {"content": [{"reader": {"name": "postgresqlreader", "parameter": {"connection": [{"jdbcUrl": [], "table": []}], "password": "", "username": ""}}, "writer": {"name": "oraclewriter", "parameter": {"column": [], "connection": [{"jdbcUrl": "", "table": []}], "password": "", "preSql": [], "username": ""}}}], "setting": {"speed": {"channel": ""}}}
}
详情查看:
Please refer to the postgresqlreader document:
https://github.com/alibaba/DataX/blob/master/postgresqlreader/doc/postgresqlreader.mdPlease refer to the oraclewriter document:
https://github.com/alibaba/DataX/blob/master/oraclewriter/doc/oraclewriter.md
2、操作示例
(1)同步测试环境
OS版本 | CentOS Linux release 7.6.1810 (Core) | Ol7.9 |
---|---|---|
DB版本 | PostgreSQL12.3 | Oracle19c (经典模式) |
同步方向 | Reader | Writer |
IP | 192.168.245.9 | 192.168.245.10 |
端口 | 5432 | 1521 |
数据库名 | htdb | orcl |
用户/密码 | htuser/htuser123 | shuaige/shuaige123 |
表名 | httab | httab |
两个虚拟机均使用
OracleLinux7.9
操作系统最小化安装,关闭防火墙和selinux
(2)准备测试表(postgresql)
-- 1、登录postgresql
------------------------------------------------------------------------------------
$ psql -h192.168.245.9 -p5432 -Uhtuser htdb
Password for user htuser:
psql (12.3)
Type "help" for help.htdb=# \c
You are now connected to database "htdb" as user "htuser".
htdb=#-- 2、创建测试表
------------------------------------------------------------------------------------
htdb=# create table httab(id serial primary key,name text,age int);
CREATE TABLE-- 3、检查新建表
------------------------------------------------------------------------------------
htdb=# \d httabTable "public.httab"Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+-----------------------------------id | integer | | not null | nextval('httab_id_seq'::regclass)name | text | | | age | integer | | |
Indexes:"httab_pkey" PRIMARY KEY, btree (id)htdb=#-- 4、插入测试数据
------------------------------------------------------------------------------------
htdb=# insert into httab(name,age) select md5(random()::text),rn from generate_series(1,10000) rn;
INSERT 0 10000-- 5、查询测试数据
------------------------------------------------------------------------------------
htdb=# select * from httab;id | name | age
-------+----------------------------------+-------10001 | 4c943d9e2be750b836365166b8bbfdf1 | 110002 | ddbad0963e08c9642d1692e9961677f7 | 210003 | 40551c9e3f00b4e7ea7c81062a94b20b | 3
...
(3)准备测试表(Oracle)
-- 1、登录oracle
------------------------------------------------------------------------------------
$ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Tue Oct 10 16:06:40 2023
Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle. All rights reserved.Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0SYS@orcl>-- 1、创建测试表
------------------------------------------------------------------------------------
SYS@orcl> create table shuaige.httab (id number(30) primary key,name VARCHAR2(1000) not null,age int);Table created.
注意更改用户名和表空间,不指定使用用户默认表空间
(4)创建并编辑json文件
在/datax/datax/job
目录下用postgresqlreader to oraclewriter模板配置json文件
vi /datax/datax/job/postgresql2oracle_httab.json
编辑配置模板按照实际环境修改:
{"job": {"content": [{"reader": {"name": "postgresqlreader", "parameter": {"connection": [{"jdbcUrl": ["jdbc:postgresql://192.168.245.9:5432/htdb"], "table": ["httab"]}], "column": ["*"],"splitPk": "id","password": "htuser123", "username": "htuser"}}, "writer": {"name": "oraclewriter", "parameter": {"column": ["*"], "connection": [{"jdbcUrl": "jdbc:oracle:thin:@192.168.245.10:1521:orcl", "table": ["httab"]}], "password": "shuaige123", "preSql": ["truncate table httab"], "username": "shuaige"}}}], "setting": {"speed": {"channel": "4"}}}
}
(5)执行json配置文件
# python /datax/datax/bin/datax.py /datax/datax/job/postgresql2oracle_httab.jsonDataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.2023-10-10 17:04:26.033 [main] INFO MessageSource - JVM TimeZone: GMT+08:00, Locale: zh_CN
2023-10-10 17:04:26.035 [main] INFO MessageSource - use Locale: zh_CN timeZone: sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
2023-10-10 17:04:26.060 [main] INFO VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
2023-10-10 17:04:26.066 [main] INFO Engine - the machine info => osInfo: Oracle Corporation 1.8 25.361-b09jvmInfo: Linux amd64 5.4.17-2011.6.2.el7uek.x86_64cpu num: 4totalPhysicalMemory: -0.00GfreePhysicalMemory: -0.00GmaxFileDescriptorCount: -1currentOpenFileDescriptorCount: -1GC Names [PS MarkSweep, PS Scavenge]MEMORY_NAME | allocation_size | init_size PS Eden Space | 256.00MB | 256.00MB Code Cache | 240.00MB | 2.44MB Compressed Class Space | 1,024.00MB | 0.00MB PS Survivor Space | 42.50MB | 42.50MB PS Old Gen | 683.00MB | 683.00MB Metaspace | -0.00MB | 0.00MB 2023-10-10 17:04:26.080 [main] INFO Engine -
{"content":[{"reader":{"name":"postgresqlreader","parameter":{"column":["*"],"connection":[{"jdbcUrl":["jdbc:postgresql://192.168.245.9:5432/htdb"],"table":["httab"]}],"password":"*********","splitPk":"id","username":"htuser"}},"writer":{"name":"oraclewriter","parameter":{"column":["*"],"connection":[{"jdbcUrl":"jdbc:oracle:thin:@192.168.245.10:1521:orcl","table":["httab"]}],"password":"**********","preSql":["truncate table httab"],"username":"shuaige"}}}],"setting":{"speed":{"channel":"4"}}
}2023-10-10 17:04:26.094 [main] WARN Engine - prioriy set to 0, because NumberFormatException, the value is: null
2023-10-10 17:04:26.095 [main] INFO PerfTrace - PerfTrace traceId=job_-1, isEnable=false, priority=0
2023-10-10 17:04:26.096 [main] INFO JobContainer - DataX jobContainer starts job.
2023-10-10 17:04:26.097 [main] INFO JobContainer - Set jobId = 0
2023-10-10 17:04:26.372 [job-0] INFO OriginalConfPretreatmentUtil - Available jdbcUrl:jdbc:postgresql://192.168.245.9:5432/htdb.
2023-10-10 17:04:26.373 [job-0] WARN OriginalConfPretreatmentUtil - 您的配置文件中的列配置存在一定的风险. 因为您未配置读取数据库表的列,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
2023-10-10 17:04:26.576 [job-0] INFO OriginalConfPretreatmentUtil - table:[httab] all columns:[
ID,NAME,AGE
].
2023-10-10 17:04:26.576 [job-0] WARN OriginalConfPretreatmentUtil - 您的配置文件中的列配置信息存在风险. 因为您配置的写入数据库表的列为*,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
2023-10-10 17:04:26.578 [job-0] INFO OriginalConfPretreatmentUtil - Write data [
INSERT INTO %s (ID,NAME,AGE) VALUES(?,?,?)
], which jdbcUrl like:[jdbc:oracle:thin:@192.168.245.10:1521:orcl]
2023-10-10 17:04:26.578 [job-0] INFO JobContainer - jobContainer starts to do prepare ...
2023-10-10 17:04:26.578 [job-0] INFO JobContainer - DataX Reader.Job [postgresqlreader] do prepare work .
2023-10-10 17:04:26.578 [job-0] INFO JobContainer - DataX Writer.Job [oraclewriter] do prepare work .
2023-10-10 17:04:26.627 [job-0] INFO CommonRdbmsWriter$Job - Begin to execute preSqls:[truncate table httab]. context info:jdbc:oracle:thin:@192.168.245.10:1521:orcl.
2023-10-10 17:04:26.648 [job-0] INFO JobContainer - jobContainer starts to do split ...
2023-10-10 17:04:26.648 [job-0] INFO JobContainer - Job set Channel-Number to 4 channels.
2023-10-10 17:04:26.667 [job-0] INFO SingleTableSplitUtil - split pk [sql=SELECT MIN(id),MAX(id) FROM httab] is running...
2023-10-10 17:04:26.690 [job-0] INFO SingleTableSplitUtil - After split(), allQuerySql=[
select * from httab where (10001 <= id AND id < 10501)
select * from httab where (10501 <= id AND id < 11001)
select * from httab where (11001 <= id AND id < 11501)
select * from httab where (11501 <= id AND id < 12001)
select * from httab where (12001 <= id AND id < 12501)
select * from httab where (12501 <= id AND id < 13001)
select * from httab where (13001 <= id AND id < 13501)
select * from httab where (13501 <= id AND id < 14001)
select * from httab where (14001 <= id AND id < 14501)
select * from httab where (14501 <= id AND id < 15001)
select * from httab where (15001 <= id AND id < 15501)
select * from httab where (15501 <= id AND id < 16001)
select * from httab where (16001 <= id AND id < 16501)
select * from httab where (16501 <= id AND id < 17001)
select * from httab where (17001 <= id AND id < 17501)
select * from httab where (17501 <= id AND id < 18001)
select * from httab where (18001 <= id AND id < 18501)
select * from httab where (18501 <= id AND id < 19001)
select * from httab where (19001 <= id AND id < 19501)
select * from httab where (19501 <= id AND id <= 20000)
select * from httab where id IS NULL
].
2023-10-10 17:04:26.691 [job-0] INFO JobContainer - DataX Reader.Job [postgresqlreader] splits to [21] tasks.
2023-10-10 17:04:26.692 [job-0] INFO JobContainer - DataX Writer.Job [oraclewriter] splits to [21] tasks.
2023-10-10 17:04:26.712 [job-0] INFO JobContainer - jobContainer starts to do schedule ...
2023-10-10 17:04:26.756 [job-0] INFO JobContainer - Scheduler starts [1] taskGroups.
2023-10-10 17:04:26.758 [job-0] INFO JobContainer - Running by standalone Mode.
2023-10-10 17:04:26.771 [taskGroup-0] INFO TaskGroupContainer - taskGroupId=[0] start [4] channels for [21] tasks.
2023-10-10 17:04:26.775 [taskGroup-0] INFO Channel - Channel set byte_speed_limit to -1, No bps activated.
2023-10-10 17:04:26.776 [taskGroup-0] INFO Channel - Channel set record_speed_limit to -1, No tps activated.
2023-10-10 17:04:26.782 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[14] attemptCount[1] is started
2023-10-10 17:04:26.785 [0-0-14-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (17001 <= id AND id < 17501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:26.786 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[3] attemptCount[1] is started
2023-10-10 17:04:26.787 [0-0-3-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (11501 <= id AND id < 12001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:26.801 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[13] attemptCount[1] is started
2023-10-10 17:04:26.802 [0-0-13-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (16501 <= id AND id < 17001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:26.807 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[2] attemptCount[1] is started
2023-10-10 17:04:26.807 [0-0-2-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (11001 <= id AND id < 11501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:26.831 [0-0-14-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (17001 <= id AND id < 17501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:26.836 [0-0-2-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (11001 <= id AND id < 11501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:26.851 [0-0-13-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (16501 <= id AND id < 17001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:26.865 [0-0-3-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (11501 <= id AND id < 12001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.110 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[13] is successed, used[323]ms
2023-10-10 17:04:27.157 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[4] attemptCount[1] is started
2023-10-10 17:04:27.157 [0-0-4-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (12001 <= id AND id < 12501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.180 [0-0-4-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (12001 <= id AND id < 12501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.258 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[2] is successed, used[456]ms
2023-10-10 17:04:27.258 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[14] is successed, used[477]ms
2023-10-10 17:04:27.259 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[18] attemptCount[1] is started
2023-10-10 17:04:27.261 [0-0-18-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (19001 <= id AND id < 19501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.262 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[0] attemptCount[1] is started
2023-10-10 17:04:27.263 [0-0-0-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (10001 <= id AND id < 10501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.282 [0-0-18-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (19001 <= id AND id < 19501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.300 [0-0-0-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (10001 <= id AND id < 10501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.363 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[3] is successed, used[578]ms
2023-10-10 17:04:27.363 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[4] is successed, used[252]ms
2023-10-10 17:04:27.365 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[15] attemptCount[1] is started
2023-10-10 17:04:27.366 [0-0-15-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (17501 <= id AND id < 18001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.368 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[6] attemptCount[1] is started
2023-10-10 17:04:27.368 [0-0-6-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (13001 <= id AND id < 13501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.387 [0-0-15-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (17501 <= id AND id < 18001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.402 [0-0-6-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (13001 <= id AND id < 13501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.569 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[0] is successed, used[309]ms
2023-10-10 17:04:27.571 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[5] attemptCount[1] is started
2023-10-10 17:04:27.571 [0-0-5-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (12501 <= id AND id < 13001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.590 [0-0-5-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (12501 <= id AND id < 13001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.672 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[6] is successed, used[306]ms
2023-10-10 17:04:27.672 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[15] is successed, used[307]ms
2023-10-10 17:04:27.673 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[18] is successed, used[414]ms
2023-10-10 17:04:27.674 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[1] attemptCount[1] is started
2023-10-10 17:04:27.675 [0-0-1-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (10501 <= id AND id < 11001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.677 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[10] attemptCount[1] is started
2023-10-10 17:04:27.677 [0-0-10-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (15001 <= id AND id < 15501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.679 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[17] attemptCount[1] is started
2023-10-10 17:04:27.679 [0-0-17-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (18501 <= id AND id < 19001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.692 [0-0-1-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (10501 <= id AND id < 11001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.709 [0-0-17-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (18501 <= id AND id < 19001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.725 [0-0-10-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (15001 <= id AND id < 15501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.981 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[10] is successed, used[306]ms
2023-10-10 17:04:27.981 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[17] is successed, used[303]ms
2023-10-10 17:04:27.983 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[11] attemptCount[1] is started
2023-10-10 17:04:27.983 [0-0-11-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (15501 <= id AND id < 16001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:27.985 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[16] attemptCount[1] is started
2023-10-10 17:04:27.985 [0-0-16-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (18001 <= id AND id < 18501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:28.008 [0-0-11-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (15501 <= id AND id < 16001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:28.021 [0-0-16-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (18001 <= id AND id < 18501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:28.086 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[5] is successed, used[516]ms
2023-10-10 17:04:28.090 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[19] attemptCount[1] is started
2023-10-10 17:04:28.090 [0-0-19-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (19501 <= id AND id <= 20000)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:28.217 [0-0-19-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (19501 <= id AND id <= 20000)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:28.307 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[1] is successed, used[633]ms
2023-10-10 17:04:28.309 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[7] attemptCount[1] is started
2023-10-10 17:04:28.309 [0-0-7-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (13501 <= id AND id < 14001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:28.376 [0-0-7-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (13501 <= id AND id < 14001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:28.511 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[19] is successed, used[423]ms
2023-10-10 17:04:28.513 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[8] attemptCount[1] is started
2023-10-10 17:04:28.514 [0-0-8-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (14001 <= id AND id < 14501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:28.617 [0-0-8-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (14001 <= id AND id < 14501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:28.717 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[11] is successed, used[735]ms
2023-10-10 17:04:28.717 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[16] is successed, used[734]ms
2023-10-10 17:04:28.718 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[9] attemptCount[1] is started
2023-10-10 17:04:28.719 [0-0-9-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (14501 <= id AND id < 15001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:28.720 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[12] attemptCount[1] is started
2023-10-10 17:04:28.720 [0-0-12-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where (16001 <= id AND id < 16501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:28.814 [0-0-9-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (14501 <= id AND id < 15001)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:28.892 [0-0-12-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where (16001 <= id AND id < 16501)
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:29.248 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[8] is successed, used[736]ms
2023-10-10 17:04:29.250 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[20] attemptCount[1] is started
2023-10-10 17:04:29.250 [0-0-20-reader] INFO CommonRdbmsReader$Task - Begin to read record by Sql: [select * from httab where id IS NULL
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:29.269 [0-0-20-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select * from httab where id IS NULL
] jdbcUrl:[jdbc:postgresql://192.168.245.9:5432/htdb].
2023-10-10 17:04:29.502 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[12] is successed, used[783]ms
2023-10-10 17:04:29.706 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[7] is successed, used[1398]ms
2023-10-10 17:04:29.806 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[9] is successed, used[1088]ms
2023-10-10 17:04:29.806 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] taskId[20] is successed, used[557]ms
2023-10-10 17:04:29.807 [taskGroup-0] INFO TaskGroupContainer - taskGroup[0] completed it's tasks.
2023-10-10 17:04:36.773 [job-0] INFO StandAloneJobContainerCommunicator - Total 10000 records, 408894 bytes | Speed 39.93KB/s, 1000 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.010s | All Task WaitReaderTime 0.000s | Percentage 100.00%
2023-10-10 17:04:36.773 [job-0] INFO AbstractScheduler - Scheduler accomplished all tasks.
2023-10-10 17:04:36.774 [job-0] INFO JobContainer - DataX Writer.Job [oraclewriter] do post work.
2023-10-10 17:04:36.774 [job-0] INFO JobContainer - DataX Reader.Job [postgresqlreader] do post work.
2023-10-10 17:04:36.774 [job-0] INFO JobContainer - DataX jobId [0] completed successfully.
2023-10-10 17:04:36.775 [job-0] INFO HookInvoker - No hook invoked, because base dir not exists or is a file: /datax/datax/hook
2023-10-10 17:04:36.775 [job-0] INFO JobContainer - [total cpu info] => averageCpu | maxDeltaCpu | minDeltaCpu -1.00% | -1.00% | -1.00%[total gc info] => NAME | totalGCCount | maxDeltaGCCount | minDeltaGCCount | totalGCTime | maxDeltaGCTime | minDeltaGCTime PS MarkSweep | 1 | 1 | 1 | 0.018s | 0.018s | 0.018s PS Scavenge | 1 | 1 | 1 | 0.009s | 0.009s | 0.009s 2023-10-10 17:04:36.776 [job-0] INFO JobContainer - PerfTrace not enable!
2023-10-10 17:04:36.776 [job-0] INFO StandAloneJobContainerCommunicator - Total 10000 records, 408894 bytes | Speed 39.93KB/s, 1000 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.010s | All Task WaitReaderTime 0.000s | Percentage 100.00%
2023-10-10 17:04:36.777 [job-0] INFO JobContainer -
任务启动时刻 : 2023-10-10 17:04:26
任务结束时刻 : 2023-10-10 17:04:36
任务总计耗时 : 10s
任务平均流量 : 39.93KB/s
记录写入速度 : 1000rec/s
读出记录总数 : 10000
读写失败总数 : 0
执行成功,检查Oracle数据库查看数据是否同步成功
SYS@orcl> col name for a50
SYS@orcl> select * from shuaige.httab where rownum < 10;ID NAME AGE
---------- -------------------------------------------- ----------16809 5f19fd4c4f65352c79318089634ee459 680916810 039773606c114ae52af27fd6bb2603e7 681016811 9dd5a56b63e6192e6f091c3dfd600f50 681116812 564147edcc95fe83af7b5bf2cc42268a 681216813 1dc07f8e48bd6baf258c0a341ad8753a 681316814 7569553c59834aff4e0c78c8a5292a9f 681416815 b93d01952acc42d345e06a062166693f 681516816 d60332e3fef6292da8c98d963435ec9e 681616817 9f3271cd20b8e473ae9e98c4b258f45d 68179 rows selected.
数据传输成功,如果在执行json文件报错,一定要先看好json文件格式,用户密码大小写,[ ]," “等,“channel"参数至少为“1”,“preSql”:[””] SQL条件可以不加,但是有主键冲突的行会报错传输失败。
相关文章:
DataX工具部署与使用(PostgreSQL to Oracle)
目录: 一、准备环境(1)安装JDK(2)检查Python版本(3)DataX 解压及测试 二、同步测试1、配置清单2、操作示例(1)同步测试环境(2)准备测试表…...

【PyTorch2 之027】在 PyTorch 中的R-CNN、Fast R-CNN和 Faster R-CNN
一、说明 亮点:对象检测是计算机视觉中最重要的任务之一。在这篇文章中,我们将概述最有影响力的对象检测算法家族之一:R-CNN、Fast R-CNN 和 Faster R-CNN。我们将重点介绍它们中的每一个的主要新颖性和改进。 最后,我们将专注于 …...

C++学习——C++函数的编译、成员函数的调用、this指针详解
以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 从博文的分析中可以看出,对象的内存中只保留了成员变量,除此之外没有任何其他信息,程序运行时不知道 stu 的类型为 Student,也不知道它…...
Pulsar Manager和dashboard部署和启用认证
Pulsar Manager部署和启用认证 官方地址: https://pulsar.apache.org/docs/zh-CN/next/administration-pulsar-manager/ Pulsar Manager 是一个网页式可视化管理与监测工具,支持多环境下的动态配置。可用于管理和监测租户、命名空间、topic、订阅、broker、集群等…...

K8S环境搭建
K8S环境搭建 前置条件 部署3台VM,一台作为master,两台作为slave需要保障vm之间网络是互通的 为vm安装docker # 安装/更新 yum-utils yum install -y yum-utils#添加阿里镜像稳定版仓库 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce…...

常用的软件项目管理工具一览
软件项目管理工具是帮助团队成功管理和完成软件开发项目的软件程序和应用程序。根据项目及其规模和复杂性,可以使用各种各样的这些工具来协助完成任务,从任务跟踪和调度,到项目报告,到版本控制和协作。 项目经理对软件项目的整体成…...

关于网络协议的若干问题(五)
1、DH 算法会因为传输随机数被破解吗? 答:DH 算法的交换材料要分公钥部分和私钥部分,公钥部分和其他非对称加密一样,都是可以传输的,所以对于安全性是没有影响的,而且传输材料远比传输原始的公钥更加安全。…...

TensorFlow入门(十七、神经元的拟合原理)
深度学习的概念源于人工神经网络的研究,神经网络是由多个神经元组成,。一个神经元由以下几个关键知识点组成: ①激活函数 ②损失函数 ③梯度下降 单个神经元的网络模型如图所示 用计算公式表达如下: z为输出的结果,x为输入,w为权重,b为偏置值。z…...
VSCODE配置C和C++
VSCode 运行 C/C 怎么配置? - 忆梦怀思的回答 - 知乎 https://www.zhihu.com/question/577315418/answer/3232537840 这个很好用,简单明白。 其中最后我的只配置了tasks.json就成功了。...

位于同一子网下的ip在子网掩码配置错误的情况下如何进行通信(wireshrak抓包分析)
前言 最近看书发现个问题,正好想学习下wireshark的使用,于是抓包做了下实验。 问题是这样的,假设有服务器A和服务器B,正确配置下两者处于同一子网;此时B的网络配置正确,而A在配置子网掩码时出了错ÿ…...
Dockerfile镜像实战
目录 1、构建SSH镜像 2、Systemctl镜像 3、nginx镜像 4、tomcat 镜像 5、mysql镜像 1、构建SSH镜像 cd /opt/sshd vim Dockerfile #第一行必须指明基于的基础镜像 FROM centos:7 #作者信息 MAINTAINER this is ssh image <hmj> #镜像的操作指令 RUN yum -y update R…...

企业如何选择安全又稳定的文件传输协议
企业无论是内部的数据共享,还是与外部的合作交流,都需要通过网络进行文件的传输和交换。然而,文件传输它涉及到多方面的因素,例如文件的大小、数量、类型、敏感性、传输距离、网络环境等。这些因素都会影响到文件传输的各个方面&a…...

Linux Kernel 4.13 RC6发布:正式版9月3日发布
美国当地时间上周末,大神Linus Torvalds发布了Linux Kernel 4.13内核的又一候选版本。上周发布的RC5版本更新幅度也要比上上周的RC4要小,Linus Torvalds表示本周发布的RC6版本属于常规更新,在过去一周的开发过程中并没有出现任何意外。RC6版本…...
C++学习——C++中const的新花样
以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 关于C语言中const的用法,见《C语言const的用法详解》。 一、C中const的新花样 在C语言中,const用来限制一个变量,表示这个变量不能被修改…...
【Linux环境搭建】五、Linux(CentOS7)编译源码安装Subversion
Subversion(简称为SVN)是一种版本控制系统,能够管理和跟踪项目开发中的代码变化。Subversion最初由CollabNet公司开发,现已成为Apache软件基金会的顶级项目之一。 Subversion使用一个中央仓库来存储所有项目文件和历史记录。开发人…...

微信小程序入门讲解【超详细】
一. 微信小程序简介 1.1 什么是小程序 2017年度百度百科十大热词之一 微信小程序(wei xin xiao cheng xu),简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用( 张小龙对其的定义是无需安装…...
AtCoder ABC239G 最小割集
题意 传送门 AtCoder ABC239G Builder Takahashi 题解 将原图中每个节点拆为入点 v v v 与出点 v ′ v v′,对于原图任一边 ( u , v ) (u,v) (u,v) 则 u ′ → v , v → u u\rightarrow v, v\rightarrow u u′→v,v→u 连一条容量为 ∞ \infty ∞ 的边&…...

Simple RPC - 01 框架原理及总体架构初探
文章目录 概述RPC 框架是怎么调用远程服务的?客户端侧的逻辑服务端侧的逻辑完整流程 客户端是如何找到服务端地址的呢?核心:NamingService跨语言的RPC实现原理 RPC 框架的总体结构对外接口服务注册中心如何使用业务服务接口客户端服务端 模块…...

VScode运行C/C++
VScode运行C/C VScode的安装这里不讲 一、mingw64的下载 二、VS code打开文件夹与创建C文件 ----------------这一步给萌新看,有C和VScode的基础可跳过---------------- 1.创建一个文件夹 2.vscode打开刚刚创建的文件夹 3.新建文件,在输入文件名1.c后…...
#智能车项目(三)串口初始化
串口1初始化 初始化串口1PA9 PA10 流程 1、声明结构体 GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; USART_InitTypeDef USART_InitStructure; 2、打开时钟 // 打开串口GPIO的时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA , ENABLE); /…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...