ดูโค๊ดเอาหล่ะกันเน๊อะ มีความขี้เกียจตั้งแต่เห็นจำนวนไฟล์ละ (คือแบบเยอะมากกกกกกก) แต่จำเป็นต้องใช้ก็เลยเกิดแลปแบบด่วน ๆ
– ใช้โครงสร้างของ HDC
– ไฟล์ที่นำเข้าอยู่ในรูปแบบของโครงสร้างมาตรฐานข้อมูลด้านสุขภาพ กระทรวงสาธารณสุข (43 แฟ้ม)
– ปล้ำ Servlet ของ HDC โดยไม่ติดตั้งระบบนี่ดูยาก ๆ อ่ะ รอปรึกษา Phoubon Ict
– อันนี้ช่วงรอไฟล์นำเข้า
#!/bin/sh #Import delimited file to database; IMPORTEDFOLDER="imported" fileCount=0 fileName="" filePath="" mkdir -p "../${IMPORTEDFOLDER}" for zip in *.zip; do zip_filename="${zip%%.*}" unzip "${zip}" -d "${zip_filename}" mv -f "${zip}" "../${IMPORTEDFOLDER}" for file in $(find ./ -name '*.txt' -or -name '*.TXT'); do fileName=${file##*/} fileName=${fileName%.txt} filePath="$(dirname $(readlink -f "${file}"))/${file##*/}" #TODO: Extend to GNU Parallel sh importdelimited.sh "${filePath}" "${fileName}" fileCount=$((fileCount+1)) done #rm -rf "${zip_filename}" done echo "${fileCount} files completed."
สคริปสำหรับนำเข้าฐานข้อมูลของ MySQL
#!/bin/sh #Import delimited file to database; #Usage : sh importdelimited.sh {Source} {Target} LOGFILE="importlog.log" DB="hdc" USERDB="a1a1a1" PASSDB="b1b1b1" SQL="" SQL="SET SESSION sql_mode=''; LOAD DATA LOCAL INFILE '$1' REPLACE INTO TABLE $2 FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;" echo "$(date -u) $2:${SQL}" >> "../${LOGFILE}" 2>&1 mysql -u${USERDB} -p${PASSDB} ${DB} -e "${SQL}" rm -f $1
ส่วนใครจะปรับโค๊ดให้ดูเมพขึ้นก็ตามสบายนะครับ ถ้าให้ดีก็ดิสคัสกันต่อก็ได้ เรานูปเชลสคริปท์ อย่างอื่นก็นูป (ดัก)