InnoQuartz - ynjch97/YNJCH_WIKI GitHub Wiki

IQ-Designer

์„ค์น˜

  • ๋ฐ˜๋””์ง‘, mariaDB, JDK 1.8 version ์„ค์น˜ ํ•„์š”
  • ํ˜•์ƒ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด Git ์„ค์น˜
  • InnoQuartzDesigner-DI-type-P-V7.2.1.20201221.zip ์••์ถ• ํ•ด์ œ ํ›„ TOS_DI-win-x86_64.exe ์‹คํ–‰

์„ธํŒ…

  • TOS_DI-win-x86_64.ini ํŒŒ์ผ์—์„œ Java ๋ฒ„์ „ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
vm
C:\Program Files\JAVA\...

๊ตฌ์„ฑ

  • IQ-Designer (์••์ถ• ํ•ด์ œ ํ›„ ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
    • T* : talend ์ปดํฌ๋„ŒํŠธ
    • Q* : ์ด๋…ธ์ฟผ์ธ  ์ปดํฌ๋„ŒํŠธ
  • IQ-Server
  • resource ํด๋”

์‹œ์ž‘

  • TOS_DI-win-x86_64.exe ์‹คํ–‰ > 'Local Project' ์ƒ์„ฑ ํ›„ Finish
  • Job Designs > Import Item > EduJobs_v3.01.zip > ์ „์ฒด ์„ ํƒ ํ›„ Finish

์‹ค์Šต

  • qe103_DB_SETUP > Local DB Connection > Component ํ™•์ธ > DB ์ •๋ณด ํ™•์ธ ๊ฐ€๋Šฅ
  • Run
  • qe201_CREATE_MEMBER > Run
  • DBeaver > ํ…Œ์ด๋ธ” ์ƒ์„ฑ๋œ ๊ฒƒ ํ™•์ธ

DB Connection ์ƒ์„ฑ

  • Metadata > Db Connections ์šฐํด๋ฆญ > Create Connection > MariaDB ์ •๋ณด๋กœ ์ž…๋ ฅํ•˜์—ฌ ์ƒ์„ฑ
  • Connection ์šฐํด๋ฆญ > Retrieve Schema > Table, View, Synonym ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ ์ž๋™ ๋งคํ•‘
    • ๊ณ„์† ์‹ฑํฌ๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ๋ณ€ํ™”ํ•  ๋•Œ๋งˆ๋‹ค Retrieve ํ•ด์•ผ ํ•จ

JOB ์ƒ์„ฑ

  • Job Designs > Create Job
  • ํ™”๋ฉด์— tDBInput ์ƒ์„ฑํ•˜์—ฌ ์•„๋ž˜์ฒ˜๋Ÿผ ์„ค์ •
  • tLogRow ์ƒ์„ฑ
  • tDBInput ์šฐํด๋ฆญ > Row > Main > ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐ
  • ์ €์žฅ ๋ฐ ์‹คํ–‰ : F6

Job ์‚ญ์ œ

  • Job ์‚ญ์ œ ์‹œ, ํœด์ง€ํ†ต์œผ๋กœ ์ด๋™๋˜๊ธฐ ๋•Œ๋ฌธ์— ์™„์ „ ์‚ญ์ œ ์ „๊นŒ์ง€ ๋™์ผํ•œ ์ด๋ฆ„์˜ Job ์ƒ์„ฑ ๋ถˆ๊ฐ€
  • ์‚ญ์ œํ•œ Job์€ ํœด์ง€ํ†ต์œผ๋กœ ์ด๋™๋จ
  • ํœด์ง€ํ†ต ์ˆ˜๋™ ๋น„์šฐ๊ธฐ > ~\IQD_DI-V7.3.1.20220308\workspace\LOCAL_PROJECT > recycle_bin.index > ์•„๋ž˜์™€ ๊ฐ™์ด ํŒŒ์ผ ์ •๋ณด ์‚ญ์ œ
    • ์‹ค์ œ ํŒŒ์ผ์ด ๋“ค์–ด์žˆ๋˜ \process ํด๋”์—์„œ ํŒŒ์ผ ์‚ญ์ œ๊นŒ์ง€ ํ•ด์ฃผ์–ด์•ผ ํ•จ
<?xml version="1.0" encoding="UTF-8"?>
<recyclebin:RecycleBin xmlns:recyclebin="http://www.talend.org/recyclebin" lastUpdate="2022-09-21T10:26:18.436+0900">
</recyclebin:RecycleBin>

tDBOutput ์‚ฌ์šฉ

  • tDBInput ์ƒ์„ฑ > Component > member ํ…Œ์ด๋ธ” ์„ธํŒ…
  • tMap ์ƒ์„ฑ > Row - Main์œผ๋กœ ์—ฐ๊ฒฐ
  • ๋”๋ธ” ํด๋ฆญ > ์šฐ์ธก output ์ƒ์„ฑํ•˜์—ฌ default ๊ฐ’ ์ œ๊ฑฐ, auto map! ์‹คํ–‰
  • tDBOutput ์ƒ์„ฑ > Component > member_2 ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ธฐ๋กœ ์„ค์ •
  • ๋ฐฉ๊ธˆ ์ƒ์„ฑํ•œ output์„ row๋กœ ์—ฐ๊ฒฐ
  • tLogRow๋ฅผ Row > Main ์œผ๋กœ ์—ฐ๊ฒฐ

Multi Thread

  • Job ํƒญ > Extra > Multi Thread execution ์„ ํƒ ์‹œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ ๊ฐ€๋Šฅ
  • Trigger > On subjob OK์œผ๋กœ ์—ฐ๊ฒฐํ•ด ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ

์ด๋ฆ„ ์ง€์ •

  • Job > Component > Job์˜ ์ด๋ฆ„ ์ง€์ • ๊ฐ€๋Šฅ
  • ์ปดํฌ๋„ŒํŠธ > Component > View > ์ด๋ฆ„ ์ง€์ • ๊ฐ€๋Šฅ

์ปดํฌ๋„ŒํŠธ ํŒจ์น˜

  • IQ-Designer ์„ค์น˜๋œ ๋””๋ ‰ํ† ๋ฆฌ > custom-component > ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ ํด๋” > jar ํŒŒ์ผ ์„ ํƒ
  • jar ํŒŒ์ผ์ด ์—†์„ ๊ฒฝ์šฐ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ๋™์ผํ•œ ๊ณผ์ • ์ˆ˜ํ–‰

IQ-Server

์‹œ์ž‘

  • iqs-startup.bat ํŒŒ์ผ ์ˆ˜์ • (innoquartz-server-4.2.3.24.RELEASE.war๊ณผ ๋ฒ„์ „์ด ๋งž๋Š”์ง€ ํ™•์ธ)
  • C:\Users\YNJCH\InnoQuartz\Education\IQ-Server์—์„œ iqs-startup.bat ์‹คํ–‰
  • http://localhost:9090/ ์ ‘์†
    • admin / admin ์œผ๋กœ ๋กœ๊ทธ์ธํ•˜์˜€์Œ

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

  • http://localhost:9090/ ์ ‘์†
  • Project > List > Create > ํ”„๋กœ์ ํŠธ๋ช… ๋ฐ properties ์„ค์ •
# source DB ์ •๋ณด
src_db_host=localhost
src_db_user=root
src_db_password=innoquartz
  • Job > List > ์ƒ์„ฑํ•œ ํ”„๋กœ์ ํŠธ ์„ ํƒ > ๋ชฉ๋ก ํ™”๋ฉด ํ™•์ธ
  • Create > Job ์ด๋ฆ„ ์ž…๋ ฅ ํ›„ ์ €์žฅ > ์žฌ์ง„์ž…ํ•˜์—ฌ Deploy Path ํ™•์ธ
    • /projects/1/jobs/1/upload-job-archive

์—ฐ๊ฒฐ

  • ๊ณตํ†ต์œผ๋กœ ์“ฐ๋Š” ์ ‘์† ์ •๋ณด ๊ด€๋ฆฌ
  • Window > Preperences > InnoQuartz > Project setting ์—์„œ ์„ค์ • ๊ฐ€๋Šฅ
iq_host_Default=http://localhost
iq_port_Default=9090
iq_access_id_Default=admin
iq_access_passwd_Default=admin
iq_exclude_jar_Default=
iq_global_jar_Default=

๋ฐฐํฌ

  • Job > Contexts > + ๋ฒ„ํŠผ์œผ๋กœ ์ถ”๊ฐ€
    • Name : iq_job_path
    • Default - Value : /projects/1/jobs/1/upload-job-archive (Deploy Path)
  • ์ขŒ์ธก Job ์šฐํด๋ฆญ > Build Job > ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ • ํ›„ Finish ํ•˜์—ฌ DEPLOY OK ์ƒํƒœ ํ™•์ธ
    • To archive file : ๋นŒ๋“œํ•˜์—ฌ zip ํŒŒ์ผ๋กœ ๋งŒ๋“ค ์œ„์น˜ ์„ ํƒ
    • Context Scripts ์ฒดํฌ, ๋นŒ๋“œ ํ™˜๊ฒฝ ์„ ํƒ (์˜ˆ : LOCAL, DEV)
    • Apply context to children : RunJob์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ฒดํฌํ•ด์•ผ ์„ ํƒํ•œ Context ํ™˜๊ฒฝ์ด ์ „๋‹ฌ๋จ
    • Items ์ฒดํฌ(ETL Job ๊ตฌ์กฐ๋กœ ๋ฐ˜๋“œ์‹œ ์ฒดํฌํ•ด์•ผ ํ•จ > ๋นŒ๋“œํ•œ zip ํŒŒ์ผ์„ importํ•ด์„œ ์‚ฌ์šฉํ•  ๋•Œ Designer์—์„œ ์—ด๋ฆฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ)
    • Java Sources ์ฒดํฌ ํ•ด์ œ, ๋ถˆํ•„์š”ํ•œ ์†Œ์Šค๊นŒ์ง€ ๋นŒ๋“œ๋˜๋Š” ๊ฒƒ ๋ฐฉ์ง€
    • Deploy > Auto Deploy ์‚ฌ์šฉํ•˜๋ ค๋ฉด YES ์„ ํƒ

๋ฐฐํฌ (IQ-SERVER Job ์—ฐ๊ฒฐ)

  • http://localhost:9090/ ์ ‘์† > Job > List > ์ƒˆ๋กœ์šด Job ์ƒ์„ฑํ•˜์—ฌ Deploy Path ๋ณต์‚ฌ
  • Job > Contexts > iq_job_path
    • ์šฐ์ธก + ๋ฒ„ํŠผ ์„ ํƒ > 'LOCAL' ์ด๋ฆ„์œผ๋กœ ์ €์žฅ > ์ƒ๊ฒจ๋‚œ LOCAL ํ™•์ธ
    • LOCAL - Value : /projects/1/jobs/2/upload-job-archive (Deploy Path)
  • ์ขŒ์ธก Job ์šฐํด๋ฆญ > Build Job > Context scripts > LOCAL๋กœ ์„ค์ •ํ•˜์—ฌ Finish > DEPLOY OK ์ƒํƒœ ํ™•์ธ

์—ฐ๊ฒฐ

  • http://localhost:9090/ ์ ‘์†
  • ์ƒ์„ฑํ•œ sample_job, sample_job2 ์—์„œ sample_job ํด๋ฆญ
  • Post Job ํƒญ > Execute another Job > When Job execution success > sample_job2 ์„ ํƒ
  • ์ €์žฅ ํ›„ sample_job ์‹คํ–‰ํ•˜๋ฉด sample_job2๋„ ํ•จ๊ป˜ ์‹คํ–‰๋˜๋Š” ๊ฒƒ ํ™•์ธ ๊ฐ€๋Šฅ

Prejob, Postjob

  • ์•„๋ž˜์™€ ๊ฐ™์ด tPrejob, tPostjob, tJava ๊ตฌ์„ฑ
  • qPre > Component
    • Print Project Properties ์„ ํƒ (๋กœ๊ทธ ์ถœ๋ ฅ ์‹œ properties ๊ฐ’ ์ถœ๋ ฅ๋˜๋„๋ก ์„ค์ •)
    • CONTEXT > LOCAL ์ถ”๊ฐ€๋œ ๊ฒƒ ํ™•์ธ
  • qPre > Contexts(๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ์ •๋ณด ๋ณ€์ˆ˜)
    • ๋Ÿฐํƒ€์ž„ ๋ณ€์ˆ˜ : Job ์‹œ์ž‘๋ถ€ํ„ฐ ์ข…๋ฃŒ๊นŒ์ง€ ์‚ฌ์šฉํ•˜๋Š” static ๋ณ€์ˆ˜
    • ํ™˜๊ฒฝ ์ •๋ณด : ๋กœ์ปฌ, ๊ฐœ๋ฐœ, ์šด์˜ ๋“ฑ ETL ์„œ๋ฒ„ ํ™˜๊ฒฝ๋งˆ๋‹ค ์ •์˜๋˜๋Š” ๊ณตํ†ต ๋ณ€์ˆ˜
    • ๋ณ€์ˆ˜ : Job ํ•˜๋“œ์ฝ”๋”ฉ ๋˜๋Š” Server์˜ project properties์˜ ๊ฐ’, Global ๋ณ€์ˆ˜ ๋“ฑ
    • ๋Ÿฐํƒ€์ž„ ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ • ๊ฐ€๋Šฅ, Context ํ™˜๊ฒฝ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
  • qPre > Context > LOCAL Value / Component > CONTEXT๊ฐ’ LOCAL / Project Setting์˜ iq_host_LOCAL ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ๋ชจ๋‘ ์ผ์น˜ํ•ด์•ผ ํ•จ
  • Context ํƒญ์˜ + ๋ฒ„ํŠผ์„ ์ด์šฉํ•ด ์ถ”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ ํ•˜๋‹จ ์…€๋ ‰ํŠธ ๋ฐ•์Šค์—์„œ Default context environment ์„ ํƒ ๊ฐ€๋Šฅ

์„œ๋ฒ„ ๋กœ๊ทธ

  • tDBInput > Component > Host, Username์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •
    • IQ-Server์˜ Project properties ์„ค์ •ํ•œ ๊ฐ’ ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ•จ
QProp.getPropMap("src_db_host")
QProp.getPropMap("src_db_user")
  • tJava > ๋กœ๊ทธ ์ถœ๋ ฅ์„ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑ
System.out.println( "select count > " + ((Integer)globalMap.get("tDBInput_1_NB_LINE")) );
System.out.println( "job end..." );
  • Run > ์•„๋ž˜์™€ ๊ฐ™์ด ๋กœ๊ทธ ๋œจ๋Š” ๊ฒƒ ํ™•์ธ
sample_job
LOG               2022.09.06 15:33:33 src_db_host=localhost
LOG               2022.09.06 15:33:33 src_db_user=root
LOG               2022.09.06 15:33:33 src_db_password=innoquartz
LOG               2022.09.06 15:33:34 BIZ START DATE : 2022-09-06 15:12:18
(์ƒ๋žต)
100|Ulysses|Arthur|F|13|Pierre|ONLINE|2022-09-06 11:17:47.0|2022-09-06 11:17:47.0
select count > 100
job end...
LOG               2022.09.06 15:12:18 BIZ END DATE : 2022-09-06 15:12:18
  • http://localhost:9090/ ์ ‘์† > Job > Job Biz Date > Biz Start Date, Biz End Date ๋ณ€๊ฒฝ๋œ ๊ฒƒ ํ™•์ธ

IQ-Designer ์‹ค์Šต

Job ๊ตฌ์„ฑ

  • MySQL localhost์˜ member ํ…Œ์ด๋ธ”์„ Oracle localhost์˜ MEMBER_MYSQL๋กœ CREATE ๋ฐ ๋ฐ์ดํ„ฐ INSERT ํ•˜๋„๋ก ํ•จ

tDBInput

  • MySQL ์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅ
  • ๋‚ ์งœ ํŒจํ„ด ๊ด€๋ จ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ, Edit Schema > "yyyy-MM-dd hh:mm:ss" ๋กœ ์„ค์ •
  • Guess Query ๋ฒ„ํŠผ ํด๋ฆญํ•˜์—ฌ ์•„๋ž˜ ์ฟผ๋ฆฌ ํ™•์ธ
"SELECT 
  `member`.`SEQ`, 
  `member`.`FIRST_NAME`, 
  `member`.`LAST_NAME`, 
  `member`.`GENDER`, 
  `member`.`AGE`, 
  `member`.`CITY`, 
  `member`.`JOIN_TYPE`, 
  `member`.`CREATE_DT`, 
  `member`.`MODIFY_DT`
FROM `member`"

tDBOutput

  • Oracle ์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅ

tJavaFlex

  • Start code, End code์˜ ๋‚ด์šฉ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์ค‘๊ฐ„์˜ Main code ๋‚ด์šฉ์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ˆ˜ํ–‰
  • ์—ฌ์„ฑ ํšŒ์›(genderType[1])์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ ์ž‘์„ฑ
// start part of your Java code
System.out.println("tJavaFlex start =================== ");
String[] genderType = {"M", "F"};
String memberStr = "";

// here is the main part of the component,
// a piece of code executed in the row
// loop
if (genderType[1].equals(outForJavaFlex.GENDER)) {
	memberStr += outForJavaFlex.FIRST_NAME + ",";
}

// end of the component, outside/closing the loop
String[] memberArr = memberStr.split(",");
System.out.println("memberArr.length is... " + memberArr.length);
System.out.println("tJavaFlex end =================== ");

tMap

  • tJavaFlex, tDBOutput์— ๊ฐ๊ฐ Map์„ ์—ฐ๊ฒฐํ•˜์˜€์Œ
  • ๋”ํ•˜๊ธฐ๋ฅผ ํ•˜๊ฑฐ๋‚˜(row2.AGE + row2.SEQ), ๋ฌธ์ž์™€ ๊ฒฐํ•ฉ((2023 - row2.AGE) + "๋…„" )ํ•  ์ˆ˜ ์žˆ์Œ
  • ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜(StringHandling.UPCASE(row2.CITY)) ๊ฐ€๋Šฅ

tJava

  • tDBOutput๊ณผ ์—ฐ๊ฒฐํ•˜์—ฌ ์ฝ˜์†”์ฐฝ์—์„œ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์กฐํšŒ
System.out.println("tDBOutput tPrejob_1_SUBPROCESS_STATE >>> " + globalMap.get("tPrejob_1_SUBPROCESS_STATE"));
System.out.println("tDBOutput tDBInput_2_NB_LINE >>> " + globalMap.get("tDBInput_2_NB_LINE"));
System.out.println("tDBOutput tDBOutput_2_NB_LINE_UPDATED >>> " + globalMap.get("tDBOutput_2_NB_LINE_UPDATED"));
System.out.println("tDBOutput tDBInput_2_SUBPROCESS_STATE >>> " + globalMap.get("tDBInput_2_SUBPROCESS_STATE"));
System.out.println("tDBOutput tDBOutput_2_NB_LINE_DELETED >>> " + globalMap.get("tDBOutput_2_NB_LINE_DELETED"));
System.out.println("tDBOutput tDBOutput_2_NB_LINE >>> " + globalMap.get("tDBOutput_2_NB_LINE"));
System.out.println("tDBOutput tJava_2_SUBPROCESS_STATE >>> " + globalMap.get("tJava_2_SUBPROCESS_STATE"));
System.out.println("tDBOutput tDBOutput_2_NB_LINE_REJECTED >>> " + globalMap.get("tDBOutput_2_NB_LINE_REJECTED"));
System.out.println("tDBOutput tDBOutput_2_NB_LINE_INSERTED >>> " + globalMap.get("tDBOutput_2_NB_LINE_INSERTED"));

tLogRow

  • ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ฝ˜์†”์ฐฝ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ
  • ์กฐํšŒ ๋ฐฉ์‹ ์„ค์ • ๊ฐ€๋Šฅ

tPrejob, tPostjob

  • tPostjob์— tJava ์—ฐ๊ฒฐ, ์ฝ˜์†”์ฐฝ์—์„œ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์กฐํšŒ
System.out.println("tPostjob >>> " + projectName + " - " + jobName + " <<<");
System.out.println("tPostjob >>> " + globalMap.get("concurrentHashMap").toString());
System.out.println("tPostjob >>> " + globalMap.get("tPrejob_1_SUBPROCESS_STATE"));
System.out.println("tPostjob >>> " + globalMap.get("Java_1_SUBPROCESS_STATE"));
  • tLogCatcher์— Catch Java Exception, Catch tWarn, Catch tWarn ์ฒดํฌ
  • tLogCatcher์— tDBOutput ์—ฐ๊ฒฐ, ์—๋Ÿฌ ๋กœ๊ทธ๋ฅผ MEMBER_MYSQL_LOG ํ…Œ์ด๋ธ”์— ๋‚จ๊ธฐ๋„๋ก ์„ค์ •
  • tDBOutput์œผ๋กœ ๋‚ด๋ ค์˜จ ๋ฐ์ดํ„ฐ๋Š” tLogRow๋ฅผ ํ†ตํ•ด ์ฝ˜์†”์ฐฝ์— ๋ณด์—ฌ์ง

์ˆ˜ํ–‰ ๊ฒฐ๊ณผ

Starting job MYSQLtoORACLE at 15:05 15/09/2022.
[statistics] connecting to socket on port 3999
[statistics] connected
tJavaFlex start =================== 
tDBOutput tPrejob_1_SUBPROCESS_STATE >>> 1
tDBOutput tDBInput_2_NB_LINE >>> 100
tDBOutput tDBOutput_2_NB_LINE_UPDATED >>> 0
tDBOutput tDBInput_2_SUBPROCESS_STATE >>> 0
tDBOutput tDBOutput_2_NB_LINE_DELETED >>> 0
tDBOutput tDBOutput_2_NB_LINE >>> 100
tDBOutput tJava_2_SUBPROCESS_STATE >>> 0
tDBOutput tDBOutput_2_NB_LINE_REJECTED >>> 0
tDBOutput tDBOutput_2_NB_LINE_INSERTED >>> 100
.----------+----------+----------+------+---+-----------+----------+--------------+--------------+---------+----------+----------.
|                                                           tLogRow_1                                                            |
|=---------+----------+----------+------+---+-----------+----------+--------------+--------------+---------+----------+---------=|
|SEQ_NUMBER|FIRST_NAME|LAST_NAME |GENDER|AGE|AGE_SEQ_SUM|BIRTH_YEAR|CITY_UPPER    |CITY          |JOIN_TYPE|CREATE_DT |MODIFY_DT |
|=---------+----------+----------+------+---+-----------+----------+--------------+--------------+---------+----------+---------=|
|1         |Millard   |Buchanan  |F     |13 |14         |2010๋…„     |TRENTON       |Trenton       |ONLINE   |06-09-2022|06-09-2022|
|2         |Abraham   |Johnson   |M     |46 |48         |1977๋…„     |HELENA        |Helena        |ONLINE   |06-09-2022|06-09-2022|
(์ƒ๋žต)
|99        |Thomas    |McKinley  |M     |64 |163        |1959๋…„     |BOISE         |Boise         |ONLINE   |06-09-2022|06-09-2022|
|100       |Ulysses   |Arthur    |F     |13 |113        |2010๋…„     |PIERRE        |Pierre        |ONLINE   |06-09-2022|06-09-2022|
'----------+----------+----------+------+---+-----------+----------+--------------+--------------+---------+----------+----------'

memberArr.length is... 51
tJavaFlex end =================== 
tPostjob >>> LOCAL_PROJECT - MYSQLtoORACLE <<<
tPostjob >>> {}
tPostjob >>> 1
tPostjob >>> null
.------+---+--------+----------+-------+---+-------+--------+----+------+-------+----.
|                                     tLogRow_2                                      |
|=-----+---+--------+----------+-------+---+-------+--------+----+------+-------+---=|
|moment|pid|root_pid|father_pid|project|job|context|priority|type|origin|message|code|
|=-----+---+--------+----------+-------+---+-------+--------+----+------+-------+---=|
'------+---+--------+----------+-------+---+-------+--------+----+------+-------+----'

[statistics] disconnected

Job MYSQLtoORACLE ended at 15:05 15/09/2022. [exit code  = 0]

IQ-Designer ์ปดํฌ๋„ŒํŠธ

tDBConnection

  • tPreJob์— ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉ

tRowGenerator

  • ๋”๋ธ” ํด๋ฆญํ•˜์—ฌ, ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ณด ์ €์žฅ ๊ฐ€๋Šฅ
<?xml version="1.0" encoding="UTF-8"?>
<schema>
	<column comment="" default="" function="TalendDataGenerator.getFirstName()" key="false" label="FIRST_NAME" length="-1" nullable="true" 
		originalDbColumnName="FIRST_NAME" originalLength="-1" parameter="" pattern="" precision="-1" preview="" talendType="id_String" type=""/>
	<column comment="" default="" function="TalendDataGenerator.getLastName()" key="false" label="LAST_NAME" length="-1" nullable="true" 
		originalDbColumnName="LAST_NAME" originalLength="-1" parameter="" pattern="" precision="-1" preview="" talendType="id_String" type=""/>
</schema>
  • tMap๊ณผ ์—ฐ๊ฒฐ, tDBOutput์„ ์—ฐ๊ฒฐํ•˜์—ฌ DB์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ

tJavaRow

  • Generate code > row ๋ณ„ ๊ฐ’ ์ œ์–ด ๊ฐ€๋Šฅ
  • tLogRow์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ฐ’ ์ถœ๋ ฅ ๊ฐ€๋Šฅ (input_row.FIRST_NAME.toLowerCase();๋กœ ์ธํ•ด ์†Œ๋ฌธ์ž๋กœ ์ถœ๋ ฅ๋œ ๊ฒƒ ํ™•์ธ)
  • ์‹ค์ œ DB ๊ฐ’์€ ์ƒ๊ด€์—†์ด ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋กœ INSERT ๋จ
โš ๏ธ **GitHub.com Fallback** โš ๏ธ