commit 29541a1bec5fe0c3e24f104a5ba2597d1185878a Author: Insub Kim Date: Wed Apr 23 20:46:36 2025 +0900 init diff --git a/index.js b/index.js new file mode 100644 index 0000000..640c160 --- /dev/null +++ b/index.js @@ -0,0 +1,200 @@ +import fetch from 'node-fetch'; +import postgres from 'postgres'; +import {drizzle} from 'drizzle-orm/postgres-js'; +import {pgTable, text} from 'drizzle-orm/pg-core'; + +// PostgreSQL 데이터베이스 연결 설정 +const sql = postgres({ + host: '172.30.1.93', // PostgreSQL 호스트 + port: 5432, // 포트 (기본값: 5432) + database: 'bizinfo', // 데이터베이스 이름 + username: 'postgres', // 사용자 이름 + password: 'Dlstjq0904!' // 비밀번호 +}); + +const orm = drizzle(sql); // Drizzle ORM 초기화 + +// PostgreSQL nice 테이블 정의 +const niceTable = pgTable('nice', { + empnum_bse_date: text('empnum_bse_date'), + zcd3: text('zcd3'), + bnknm: text('bnknm'), + btpnm: text('btpnm'), + etl_ipc_yn: text('etl_ipc_yn'), + upt_date: text('upt_date'), + korreprnm: text('korreprnm'), + nolt_sgng: text('nolt_sgng'), + zcd2: text('zcd2'), + dtlcont: text('dtlcont'), + crpno_rsdrgsbdtsexvl: text('crpno_rsdrgsbdtsexvl'), + nolt_sido3: text('nolt_sido3'), + chulja: text('chulja'), + etb_date: text('etb_date'), + nolt_sido2: text('nolt_sido2'), + eqrObl: text('eqrObl'), + slandc: text('slandc'), + tel: text('tel'), + fax: text('fax'), + scl: text('scl'), + zipareacdseq3: text('zipareacdseq3'), + zipareacdseq2: text('zipareacdseq2'), + nolt_sgng2: text('nolt_sgng2'), + fadivcd: text('fadivcd'), + sventure: text('sventure'), + nolt_emdg: text('nolt_emdg'), + zarcd: text('zarcd'), + opt_entrnm: text('opt_entrnm'), + empnum: text('empnum'), + kor_itemnm: text('kor_itemnm'), + upt_dtm: text('upt_dtm'), + mainupche: text('mainupche'), + nolt_engaddr2: text('nolt_engaddr2'), + nolt_engaddr3: text('nolt_engaddr3'), + nolt_dtl_koraddr: text('nolt_dtl_koraddr'), + zipareacdseq: text('zipareacdseq'), + nolt_sgng3: text('nolt_sgng3'), + eng_idscdnm: text('eng_idscdnm'), + tel2: text('tel2'), + engentrnm: text('engentrnm'), + crprgrnstscd: text('crprgrnstscd'), + rbtpnm: text('rbtpnm'), + engaddr3: text('engaddr3'), + homepurl: text('homepurl'), + tel3: text('tel3'), + engaddr2: text('engaddr2'), + amnisuyn: text('amnisuyn'), + sido: text('sido'), + bzdnm: text('bzdnm'), + eng_scl: text('eng_scl'), + zcd: text('zcd'), + nolt_sido: text('nolt_sido'), + repr_regno: text('repr_regno'), + scaledivcd: text('scaledivcd'), + eqrOblEng: text('eqrOblEng'), + cls_yndivcd: text('cls_yndivcd'), + zarcd3: text('zarcd3'), + zarcd2: text('zarcd2'), + nolt_dtl_koraddr2: text('nolt_dtl_koraddr2'), + nolt_dtl_koraddr3: text('nolt_dtl_koraddr3'), + idscdid: text('idscdid'), + eng_mainupche: text('eng_mainupche'), + eprdtldivcd: text('eprdtldivcd'), + fa_bse_date: text('fa_bse_date'), + sbqc_date: text('sbqc_date'), + koraddr: text('koraddr'), + koraddr3: text('koraddr3'), + nolt_koraddr: text('nolt_koraddr'), + koraddr2: text('koraddr2'), + ltg_date: text('ltg_date'), + rbtpnm3: text('rbtpnm3'), + nolt_koraddr3: text('nolt_koraddr3'), + nolt_koraddr2: text('nolt_koraddr2'), + x: text('x'), + y: text('y'), + rdnm_sido2: text('rdnm_sido2'), + hupegbn: text('hupegbn'), + kisreporturl: text('kisreporturl'), + rdnm_sido3: text('rdnm_sido3'), + rbtpnm2: text('rbtpnm2'), + mainpdtpcl: text('mainpdtpcl'), + stkcd: text('stkcd'), + bizno: text('bizno'), + grpnm: text('grpnm'), + sbn_date: text('sbn_date'), + eprmdydivcd: text('eprmdydivcd'), + eprdatastsdivcd: text('eprdatastsdivcd'), + bnk_brnm: text('bnk_brnm'), + korentrnm: text('korentrnm'), + fax3: text('fax3'), + logo: text('logo'), + fax2: text('fax2'), + rdnm_dtl_koraddr: text('rdnm_dtl_koraddr'), + rdnm_sgng3: text('rdnm_sgng3'), + rdnm_sido: text('rdnm_sido'), + eng_grpnm: text('eng_grpnm'), + nts_sbqcdivcd: text('nts_sbqcdivcd'), + eng_mainpdtpcl: text('eng_mainpdtpcl'), + kiscode: text('kiscode'), + korreprcd: text('korreprcd'), + engaddr: text('engaddr'), + rdnm_sgng2: text('rdnm_sgng2'), + smanda: text('smanda'), + ltgmktdivcd: text('ltgmktdivcd'), + obz_date: text('obz_date'), + x2: text('x2'), + eng_itemnm: text('eng_itemnm'), + x3: text('x3'), + fadivnm: text('fadivnm'), + sforeign: text('sforeign'), + eml: text('eml'), + crpno: text('crpno'), + rdnm_sgng: text('rdnm_sgng'), + y2: text('y2'), + nolt_emdg3: text('nolt_emdg3'), + y3: text('y3'), + nolt_emdg2: text('nolt_emdg2'), + korrdnm: text('korrdnm'), + eng_btpnm: text('eng_btpnm'), + bzdnm2: text('bzdnm2'), + bzdnm3: text('bzdnm3'), + kor_idscdnm: text('kor_idscdnm'), + eng_bnknm: text('eng_bnknm'), + logossl: text('logossl'), + stacmm: text('stacmm'), + idscd: text('idscd'), + repr_rsdrgsbdtsexvl: text('repr_rsdrgsbdtsexvl'), + gicd: text('gicd'), + epr_cnu_yn: text('epr_cnu_yn'), + nolt_engaddr: text('nolt_engaddr'), + korrdnm3: text('korrdnm3'), + korrdnm2: text('korrdnm2'), + engreprnm: text('engreprnm'), + rdnm_dtl_koraddr3: text('rdnm_dtl_koraddr3'), + rdnm_dtl_koraddr2: text('rdnm_dtl_koraddr2') +}); + +async function main() { + const baseUrl = 'https://nice.kegorii.workers.dev/get?t='; + const firstArray = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'H', 'I', 'J', 'L', 'M', 'N', 'O', 'P', 'Q'] + for (let i = 0; i < firstArray.length; i++) { + let secondArray = []; + if (i >= 0 && i <= 9) { + secondArray = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; + + } else { + secondArray = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; + } + console.log(secondArray); + for (let x = 0; x < secondArray.length; x++) { + for (let y = 5; y < 20; y++) { + const rtnval = y.toString().padStart(3, '0'); + + const kiscode = firstArray[i] + secondArray[x] + rtnval; + const url = `${baseUrl}${kiscode}`; + console.log(firstArray[i] + secondArray[x] + rtnval); + try { + const response = await fetch(url); + + if (!response.ok) { + throw new Error(`Request failed: ${response.statusText}`); + } + + const jsonData = await response.json(); + const insertValues = jsonData.map(item => ({ + ...item // 모든 데이터를 그대로 삽입 (데이터 정제 필요) + })); + + if (insertValues.length > 0) { + await orm.insert(niceTable).values(insertValues); + + } + } catch (error) { + console.error(`Error at kiscode:${kiscode}`, error); + } + console.log('ok'); + } + } + } +} + +main(); \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..5d641c5 --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "nice-crawler", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "dotenv": "^16.5.0", + "drizzle-orm": "^0.42.0", + "node-fetch": "^3.3.2", + "pg": "^8.14.1", + "postgres": "^3.4.5" + } +}