小巧。快速。可靠。
任選三項。
CSV 虛擬表格

1. 概觀

CSV 虛擬表格會讀取 RFC 4180 格式的逗號分隔值,並將內容傳回,就像 SQL 表格中的列和欄一樣。

CSV 虛擬表格對於需要大量載入逗號分隔值內容的應用程式很有用。CSV 虛擬表格也可以作為實作其他虛擬表格的範本來源檔案。

CSV 虛擬表格並未內建在 SQLite 合併中。它以 獨立的來源檔案 形式提供,可以編譯成 可載入的擴充功能。從 命令列殼層 使用 CSV 虛擬表格的典型用法如下

.load ./csv
CREATE VIRTUAL TABLE temp.t1 USING csv(filename='thefile.csv');
SELECT * FROM t1;

上述腳本的第一行會讓 命令列殼層 讀取並啟用 CSV 的執行時期可載入擴充功能。對於應用程式而言,等效的 C 語言 API 是 sqlite3_load_extension()。請注意,擴充功能檔名中省略了檔名副檔名(例如:".dll" 或 ".so" 或 ".dylib")。省略檔名副檔名不是必要的,但有助於讓腳本跨平台。SQLite 會自動附加適當的副檔名。

上述第二行建立一個名為「t1」的虛擬表格,它會讀取參數中所指定檔案的內容。欄位的數量和名稱會自動根據內容的第一行來決定。CSV 虛擬表格的其他選項提供了從字串(而非獨立檔案)取得 CSV 內容的功能,並讓程式設計師能更進一步控制欄位的數量和名稱。選項的詳細資訊如下。CSV 虛擬表格通常會建立為 TEMP 表格,因此它只會存在於目前的資料庫連線中,而不會成為資料庫結構的永久部分。請注意,SQLite 中沒有「CREATE TEMP VIRTUAL TABLE」指令。相反地,請在虛擬表格的名稱前面加上「temp.」結構前綴。

範例的第三行顯示了虛擬表格的使用方式,用來讀取 CSV 檔案的所有內容。這可能是使用虛擬表格最簡單的方式。CSV 虛擬表格可以在任何可以使用一般虛擬表格的地方使用。您可以在子查詢或共用表格運算式中使用 CSV 虛擬表格,或視需要加入 WHERE、GROUP BY、HAVING、ORDER BY 和 LIMIT 子句。

2. 參數

上述範例顯示了 CSV 虛擬表格的單一 filename='thefile.csv' 參數。但也可以使用其他參數。

3. 欄位名稱

虛擬表格的欄位名稱主要由 schema= 參數決定。如果省略 schema= 參數,但 header 為 true,則 CSV 檔案第一行中的值會變成欄位名稱。如果省略 schema= 參數,且 header 為 false,則欄位會命名為「c0」、「c1」、「c2」,以此類推。

此頁面最後修改於 2022-01-08 05:02:57 UTC