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
Step3. View > Line Ending > Unix
PS. 將 Terminal 的 Preference 的 Advanced Setting 中的 Character Encoding 改成 UTF-8
或者,不妨依照這裡 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 串起來。
留言列表