將資料匯出到 MySQL 中的 Outfile

Rashmi Patidar 2024年2月15日
將資料匯出到 MySQL 中的 Outfile

在某些情況下,使用者希望在輸出檔案或某些本地儲存中捕獲操作。儲存可以是 CSV 檔案或記事本,其中可以放置 SQL 的內容。

該檔案是使用 MySQL 的 outfile 命令生成的。此命令允許使用者將 SQL 輸出匯出並捕獲到特定檔案中。

select into outfile 命令允許使用者在特定列中插入行,並且使用選項允許讀取表和輸出檔案中所需的格式型別。它有助於以使用者定義的格式表示檔案中的表。

語法:

select * from stu into outfile "outfile.txt";
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option, so it cannot execute this statement

當使用者嘗試執行命令時,會填充上述錯誤。錯誤填充的原因是 MySQL 伺服器安裝,預設配置為 .ini 檔案中的 --secure-file-priv

該選項不允許出於安全目的匯入和匯出庫。此變數存在於限制使用者將資料共享到外部檔案的 sqld 檔案下。

可以使用以下命令檢視為變數 --secure-file-priv 設定的當前路徑:

SHOW VARIABLES LIKE "secure_file_priv";

使用帶有變數名稱的路徑更改配置變數值。遍歷到變數中顯示的目的地。

在該位置找到 my.ini。搜尋 secure_file_priv 變數並將值替換為空值。

下面是預設情況下影象變數值如何呈現的螢幕截圖。

mysql secure_file_priv 變數

導航到變數存在的路徑。使用者將能夠找到 my.ini 檔案。

更改相同變數的配置並再次儲存檔案。重新啟動伺服器以檢視錯誤是否消失。

上述命令的變化如下:

SELECT stu_id, stu_name, stu_age, stu_add INTO OUTFILE 'outfile.csv'
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    FROM tablename;

該命令允許使用者指定表中存在的轉義序列。表格內的列由逗號、, 或管道| 或製表符分隔。

可以在插入時使用上述命令和特定命令對其進行配置。

上述命令的詳細闡述如下。

  1. SELECT * 命令用於選擇特定表的所有記錄。
  2. INTO OUTFILE 關鍵字向伺服器表明特定命令將對檔案進行輸出操作。
  3. filename 說明了插入輸出的檔案。
  4. FIELDS TERMINATED BY 選項允許使用者指定列和屬性分隔所需的字元。它增加了檔案的可讀性。關鍵字允許使用者轉義 CSV 檔案中的特殊字元。
  5. OPTIONALLY ENCLOSED BY 選項不是一個應該提供的強制性選項。它允許使用者提供字串格式的序列。
  6. LINES TERMINATED BY 選項允許將\n 轉義序列視為輸出檔案中的換行符。此選項有助於更好地理解輸出檔案中的表格和解釋。
  7. 最後,可以提供一個表名,它包含了整個命令。上面給出的所有選項都被包裝並限制在 table_name 上。需要對以下語句執行操作。

下面提供了 MySQL 命令提示符的影象。

帶有選項的 select into outfile 命令

它顯示了在本地 MySQL 命令提示符下執行的命令。

上述命令在 CSV 檔案中的輸出

現在,上面的輸出是使用 outfile 命令建立的檔案中存在的記錄。

作者: Rashmi Patidar
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

相關文章 - MySQL Export