MySQL 伺服器上的 CSV 引擎

MySQL 伺服器上的 CSV 引擎

我不認為這是一個程式設計問題,所以我要在這裡問 -

在讀《高性能mysql》一書時,我讀到了有關CSV引擎的內容。該段說:

CSV 引擎可以將逗號分隔值 (CSV) 檔案視為表,但不支援對其建立索引。該引擎允許您在伺服器運行時將檔案複製到資料庫中或從資料庫複製檔案。如果您從電子表格匯出 CSV 檔案並將其保存在 MySQL 伺服器的資料目錄中,伺服器可以立即讀取它。類似地,如果您將資料寫入 CSV 表,外部程式可以立即讀取它。 CSV 表作為資料交換格式和某些類型的日誌記錄特別有用。

我從本段中得到的是,我可以將 .CSV 檔案複製到資料庫的資料目錄中,並且它應該顯示為可以讀取的表。但是,每當我將測試 .csv 檔案複製到目錄中時,它都不會顯示為表格。我無法訪問它。

我也在使用MySQL 5.5

有誰知道為什麼這不起作用,或者我做錯了什麼?

答案1

我選擇在我的 MySQL 伺服器上嘗試一下,看看問題出在哪裡。看來您需要在 MySQL 中建立表(指定了 engine=csv),以便將表適當地添加到 MySQL 中,並且它將追蹤表字段元資料。在我的測試中,如果不先使用“create table”,我就無法讓 MySQL 了解 csv 檔案。

例子:

  1. 在本例中建立名為 foo 的新 csv,名為「i」的欄位表示整數,「c」表示字元欄位: CREATE TABLE foo (i int not null, c char(10) not null) engine=csv;
  2. foo.frm、foo.CSM、foo.CSV 在 /var/lib/mysql/data/dbname 中創建,您會注意到 foo.CSV 是零位元組。
  3. 將現有的 csv(與為表定義的格式相符)複製到 foo.CSV 中:

    1,"FOOBAR"
    2,"FOOBAZ"
    3,"BARBAZ"
    
  4. 在 mysql 中,select * from foo 應該會產生以下結果:

    mysql> select * from foo;
    +---+--------+
    | i | c      |
    +---+--------+
    | 1 | FOOBAR |
    | 2 | FOOBAZ |
    | 3 | BARBAZ |
    +---+--------+
    3 rows in set (0.00 sec)
    

相關內容