close

Clipper的dbf資料轉成文字檔而且可以在OSX中讀取之後,接下來就是要把中文的文字檔轉入sqlite3之中。

試了兩天,利用Javascript以及現有的HTML5的localStorage的功能,發現不work。因為localStorage有檔案大小的限制,經過測試,在 Chrome 是5200000 字元,而在 Safari 只有 2600000。不能用。只能回頭去找正規的 Node.js 的標準架構,或者先用 bash 把檔案一行一行讀入 sqlite3 的 database 之中。

找到了 How to split a list by comma not space,還是有 encoding 的問題。試了一下,發現把原來的中文 txt 利用 sublime 存成 UTF-8 的 encoding 方式之後,就可以正常在 bash 中讀取出中文字了。

Step1. 用 sublime 打開你的中文的文字檔

Step2. File > Save with Encoding > UTF-8

savewithutf8     

Step3. View > Line Ending > Unix

 Screen Shot 2014-09-10 at 2.44.53 PM    

PS. 將 Terminal 的 Preference 的 Advanced Setting 中的 Character Encoding 改成 UTF-8

Screen Shot 2014-09-09 at 8.11.35 AM  

或者,不妨依照這裡 Sublime Text 2 - Encoding UTF-8 ,加入這一行

"default_encoding": "UTF-8",

把 utf-8 設成 sublime 的 default encoding。

當初轉檔時是用 | 作為分隔符號,不過測試結果怪怪的,於是把它全部 replace 成 , 再來處理...

在 DOS 環境是以 unicode 的方式存檔,但在 OSX 中是以 UTF-8 的方式。這裡找了一篇解釋兩者之異同的文章 Unicode/UTF-8的差異,可以參考看看。

#!/bin/bash
sqlite3 6e.db "CREATE TABLE IF NOT EXISTS customer (id INTEGER NOT NULL, name TEXT NOT NULL, tel TEXT, birthday TEXT, addr TEXT NOT NULL, mail_or_not TEXT, comment TEXT, last_consume_dt TEXT, description TEXT );"
IFS=,
while read line
do
    name=$line
    field=( $line )
    #sql="INSERT INTO customer VALUES"
    values=""
    #echo "Text read from file - $name"
    for word in "${field[@]}"
    do 
      #echo ">>>> $word"
      values="$values,'$word'"
      #echo "values::::=$values"
    done
    #echo "-------------->${values:1}"
    sqlite3 6e.db "INSERT INTO customer VALUES(${values:1});"
    #echo sqlite3 6e.db "INSERT INTO customer VALUES(${values:1});"
done < $1

轉成 sqlite 的 db 檔之後,就輪到用 Node.js 以及 html5sql.js 將 node.js 以及 sqlite3 串起來。

arrow
arrow
    全站熱搜

    hulu2020 發表在 痞客邦 留言(0) 人氣()