網頁

顯示具有 sqlite 標籤的文章。 顯示所有文章
顯示具有 sqlite 標籤的文章。 顯示所有文章

2012年6月11日 星期一

sqlite manager匯出資料表,亂碼

【環境:sqlite manager,excel,Numbers】

在mac中,從sqlite manager下載的資料表,用excel打開csv後,中文竟然變成亂碼,這是一件很頭痛的事情,

當然如果你用mac的Numbers打開,應該都是正常的,所以建議用Numbers打開

如果是欄位顯示錯誤的問題,可能在輸出的時候勾選如下圖
請將[Fields Enclosed by] 的 double quotes(''),if necessary (standard) 勾選


輸出的表格就會是正常的

至於在excel中
因為Excel打開檔案時,默認非UTF8的CSV文件

有兩種解決辦法:
1. 可以先用記事本打開csv,另存為ANSI編碼,再用Excel打開。
2. 打開空的Excel,然後在資料->取得外部資料->從文字檔→選擇csv文件,選則UTF-8的編碼(默認是ANSI)。

不過要記得,當你要把資料存回sqlite manager後,要記得選擇正確的格式,不然匯入後,會是亂碼,所以最簡單的做法當然是用Numbers摟。


至於如何在Numbers和excel中修正欄位問題,以後再說。

sqlite manager匯入csv,亂碼

【環境:sqlitemanager,Numbers】
編碼問題一直是程式人員頭痛的問題,從php...信箱編碼...然後資料庫匯入匯出編碼...mac壓縮格式和win壓縮格式 解壓縮後的編碼問題...

一堆有的沒的...
匯入sqlite manager的流程就不多寫了..
主要就是csv檔放進去後資料庫中產生亂碼問題...

準備的資料有
1.已經更正的資料表,execl or Numbers
2.從sqlite manager匯出原本的資料表

我用的是Numbers,將從sqlite manager下載後的csv檔打開後,土法煉鋼的方式,將資料放到csv裡面,最後再用Numbers的輸出,如下圖


將檔案輸出成csv,並選擇你要的格式



2012年6月6日 星期三

ios資料儲存結構

參考資料:

先前介紹過sqlite的使用方式
這次來介紹儲存在手機端ios的目錄結構
如下圖:
ios儲存資料的方式很多種,可以利用.plist或者直接儲存純文字檔,通常數量很龐大的,就用sqlite會比較恰當。

不過當然你可以在你的程式碼中,自己建立新的folder並放置於documents的路徑,像是我為了sqlite資料庫的版本控制,寫了一個plist放在自己建立的folder中,每次打開app就會去比對手機中資料庫版本和目前安裝的版本是否相同。

在這邊稍微解釋一下,通常我們把sqlite資料庫放入app中,並由使用者安裝,安裝過程中,app會必須拷貝一份資料庫,到你手機中app的資源庫中,所以假如你在程式中,沒有加入資料庫是否相同,則每次開啓app,就會把預設的資料庫重新放入你的手機app資源庫中。

舉個例子:
當你製作一份通訊錄,輸入資料後,重新打開app,若無判斷,則app又會把相同名稱的資料庫重新安裝到你的手機中。

我自己除了路徑判斷外,還加上版本控管的功能,這樣以後資料庫可以獨自線上更新,不用透過app store整個更新。或者進階還可以背景更新。

目錄的操作方式請參考:NSFileManager

sqlite於ios程式碼的操作,不錯的網站

SQLite Tutorial


額外補充:

SQL查詢慢的48個原因分析



sqlite manager



【環境:Firefox 12.0、sqlite manager 0.7.7】

說明:
一開始原本也是使用command下指令,去建立sqlite的結構,但無法一覽無疑的介面實在令我很不習慣,畢竟開發程式,可以越方便越好,省去記憶一些開發的指令,例如筆者最近要研究redmine和git這兩個套件,若用command下指令方式去連接,日子一久也難免忘記,到時又必須花費額外的時間研究,有時相當不划算。

所以為了加速app的開發
使用firefox的加載元件manager建構你的sqlite,將會非常快速。

若有些真的很想瞭解基本架構的人,可以參閱此篇文章:sqlite

因為是firefox的開發套件,所以必須去下載firefox,之後進入下方頁面下載manager套件
https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/

下載後啓動就到firefox的頁面導覽器中,如圖

你可以看到sqlite manager點選進去即可。
操作方法可以看官網介紹。

在這邊就不多說

唯一要注意的是,若你想放到你的xcode project中,則你必須加入一個frameWork叫做libsqlite3.0.dylib

加入framework的方式可以參閱:加入Frameworks到你的專案內
並在你的.h裡面加入#import "sqlite3.h"


在project中快速使用的方式,之後補齊。

sqlite



sqlite是一個輕薄短小的資料庫,
這是sqlite的官網,裡面可以查到一些進階的功能
http://www.sqlite.org/

原始的sqlite建立
若是mac則直接打開command視窗,輸入指令即可
若是win則可以去下載sqlite專用指令視窗

建立sqlite資料庫的方法如下(以mac)
1.開啟command
2.建立的位置,通常在於你目前commad指令視窗目前所指的資料夾位置
3.輸入sqlite3 name.db ,按下enter後,進入sqlite的指令環境
4.建立table 名稱 main_class
CREATE TABLE main_class (
    id INT UNSIGNED NOT NULL,
    name varchar NOT NULL,
    PRIMARY KEY(id)
);

5.將製作好的.db檔,轉成.sqlite檔案,加入到xcode的專案中。
對著xcode左列的檔案按下右鍵,將製作好的.sqlite檔加到Resources資料夾中,做好歸類即可
ps:我看過別人用.rdb檔案建立資料庫,也是直接放入專案當中,直接讀取,似乎也可行,不過沒試過

除了透過以上方法
還可以用sqlite manager還有mamp的方式新增sqlite資料庫

===============================

sqlite建立注意事項
1.先建立一個xcode專案
2.打開command
3.建立sqlite資料庫

方法:
1.下指令:建立資料庫名稱 
sqlite3 name.db  
2.建立資料表方式等等可查詢相關指令


4.退出sqlite3的命令模式,在基本command模式下匯出.db轉成.sqlite
sqlite3 name.db ".dump" > name.sqlite

5.將.sqlite放入xcode的資源庫,加入方法則是對著你要存放的位置按下右鍵,選擇Add Files to xxxxxxxxxxxxx,如圖:



6.
要讓xcode可以讀取就必須添加下列lib到xcode專案中
首先添加 Apple 提供的 sqlite 操作用程序库 ibsqlite3.0.dylib 到工程中。
位置如下
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS${VER}.sdk/usr/lib/libsqlite3.0.dylib

在xcode左側欄位的framework中添加

或者

參閱此篇文章

加入Frameworks到你的專案內


7.添加framework後,就在.h檔中加入#import "sqlite3.h"即可使用。