透過SQLite3 來用一指令實現SQL讀取CSV檔

看到DK的文章上提到這個功能覺得也太有趣了, 沒想到會有這麼簡單方式來從CSV檔中讀取想要的內容…

使用方式

將sqlite3 透過memory的方式讀取了以後, 就可以透過SQL來找到其中想要的內容了…

sqlite3 :memory: -cmd '.mode csv' -cmd '.import mds_content_status.csv temp' -cmd '.mode column' 'SELECT * FROM temp'

為了讓使用方式更方便, 還可以在.bashrc.zshrc中把上面的cli 指令包裝成 shell function 如下:

function query_csv() {
    local CSV_FILE=$1
    local TABLE=$2
    local QUERY=$3

    sqlite3 :memory: -cmd '.headers on' -cmd '.mode csv' -cmd ".import ${CSV_FILE} ${TABLE}" -cmd '.mode column' "${QUERY}"
}

然後我們就可以用下面的方式去query了…

query_csv users.csv user_table 'SELECT id, name FROM user_table where id=17807'

reference

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *