title: how-to-import-and-export-data-in-lovefield
tags: angular 2
會使用到lovefield
來開發程式,應該蠻有機會有需要用到匯出(export
)與匯入(import
)這兩個功能的,今天來介紹一下。
export
lovefield內建的lf.Database物件就提供了匯出與匯入這兩個功能,首先介紹匯出的部分。export會將程式內的資料庫轉為一個javascript的object。格式如下:
1 | { |
使用方式
在自己寫的servicelf.service.ts
中加入一個新的function
1 | exportDB() { |
同場加映:如何將匯出的資料存成檔案?
我們要利用網址來將資料存為檔案,首先需要先import DomSanitizationService
這個功能。
再來需要將href
,file_name
這兩個屬性做bind,所以先宣告,
最後寫一個function來call上面所寫好的service的export function。當使用者點選匯出資料庫
之後,再點選下載
連結就可以將資料庫存為檔案。
1 | ... |
該頁面的html
1 | <button type="button" (click)="exportDb()" pButton label="匯出資料庫"></button> |
import
import部分需要先將原本資料庫的內容全部清空後(不是把整個資料庫砍掉),才可以進行匯入的動作。注意,匯入的資料的資料庫名稱與版本必須與原本的一致。
1 | { |
匯入的不可以是字串string
,必須是json的物件,所以要利用JSON.parse(data)
來轉換(假設你的data原本是string)。
1 | this.myDb.delete().from(this.myTable).exec().then(() => { |
同場加映:如何匯入date_time類別的資料?
有一點需要注意,那就是如果資料表的欄位有時間日期lf.Type.DATE_TIME
的類別,則需要先行處理,不然會產生value.getTime()
的error。本例參考stackoverflow改寫了一個dateTimeReviver
,來處理yyyy-MM-ddTHH:ii:ss.fffZ
的格式(ex: 2016-07-27T15:42:22.554Z
)。把這個Reviver當做JSON.parse()的第二個參數即可。
1 | importDb(data: string) { |