Mysql

MySQL 伺服器上的 CSV 引擎

  • January 23, 2017

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

閱讀高性能mysql這本書,我閱讀了有關CSV引擎的資訊。該段說:

CSV 引擎可以將逗號分隔值 (CSV) 文件視為表,但它不支持對它們進行索引。該引擎允許您在伺服器執行時將文件複製進和複製出數據庫。如果您從電子表格中導出 CSV 文件並將其保存在 MySQL 伺服器的數據目錄中,則伺服器可以立即讀取它。同樣,如果您將數據寫入 CSV 表,外部程序可以立即讀取它。CSV 表作為數據交換格式和某些類型的日誌記錄特別有用。

我從這一段中得到的是,我可以將一個 .CSV 文件複製到數據庫的數據目錄中,它應該顯示為一個可以讀取的表。但是,每當我將測試 .csv 文件複製到目錄中時,它都不會顯示為表格。我無法訪問它。

我也在使用 MySQL 5.5

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

我選擇在我的 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"
  1. 在 mysql 中, select * from foo 應該會產生以下結果:
mysql> select * from foo;
+---+--------+
| i | c      |
+---+--------+
| 1 | FOOBAR |
| 2 | FOOBAZ |
| 3 | BARBAZ |
+---+--------+
3 rows in set (0.00 sec)

引用自:https://serverfault.com/questions/333713