ดูโค๊ดเอาหล่ะกันเน๊อะ มีความขี้เกียจตั้งแต่เห็นจำนวนไฟล์ละ (คือแบบเยอะมากกกกกกก) แต่จำเป็นต้องใช้ก็เลยเกิดแลปแบบด่วน ๆ
– ใช้โครงสร้างของ HDC
– ไฟล์ที่นำเข้าอยู่ในรูปแบบของโครงสร้างมาตรฐานข้อมูลด้านสุขภาพ กระทรวงสาธารณสุข (43 แฟ้ม)
– ปล้ำ Servlet ของ HDC โดยไม่ติดตั้งระบบนี่ดูยาก ๆ อ่ะ รอปรึกษา Phoubon Ict
– อันนี้ช่วงรอไฟล์นำเข้า

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/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."
#!/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."
#!/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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/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
#!/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
#!/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

ส่วนใครจะปรับโค๊ดให้ดูเมพขึ้นก็ตามสบายนะครับ ถ้าให้ดีก็ดิสคัสกันต่อก็ได้ เรานูปเชลสคริปท์ อย่างอื่นก็นูป (ดัก)

Published by Man Friday

Application Developer, Photographer and WordPress aficionado. Particularly interested in relational database design, In usability, UX and accessibility on software development. I just wear glasses, Lives in Ubonratchathani, Thailand.