Mysql

更正查詢的“行終止於”

  • May 6, 2015

我正在嘗試查詢兩個數據表並將它們發送到 csv 文件以上傳到網站。但是,我無法讓格式打球。我希望標題分成列,然後將相關數據與數據正文中的列對齊。

我目前最接近實現我的目標 -

FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY ''

哪個返回 -

從 mysql 工作台中的查詢返回的數據

但是你可以看到我的問題。任何帶有“\”的元件號都會呈現到錯誤的列中,並且數據與標題不一致。

現在請記住,表格總是每秒更新一次,我無法控制數據的上傳方式。我無法從零件# 中刪除“\”。

我需要一個忽略“\”的解決方法。

這很難解釋,所以…

TLDR:- 我需要所有數據都像圖片中的大多數行一樣排列,“欄位/行終止於”參數是什麼?

請參閱答案底部的 mydata.csv 文件。

我創建了一個表 xy

CREATE TABLE `xy` 
(
 `fred` int(11) DEFAULT NULL,
 `mary` int(11) DEFAULT NULL,
 `billy` varchar(50) DEFAULT NULL
);

這裡的文件中,我嘗試了這個

LOAD DATA INFILE 'mydata.txt' INTO TABLE tbl_name
 FIELDS TERMINATED BY ',' ENCLOSED BY '"'
 LINES TERMINATED BY '\r\n'

但這失敗了(只導入了一行)。我將 \r\n 更改為 \n (Unix),這樣更好(所有行都導入了,但在 VARCHAR 欄位中沒有 \ - 它們被簡單地刪除了)。

進一步的Google搜尋把我帶到了這裡

所以我嘗試了這個(來自答案)

LOAD DATA INFILE 'mydata.csv' INTO TABLE xy
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';

(注意 ESCAPED BY ’’ - 即什麼都沒有 - \ 是預設的轉義字元)。

這有效(下表 xy 中的四行範例)

|    2 |    3 | asf\dsadfs |
|    2 |    3 | asfdsadfs  |
|    2 |    3 | asfdsadfs  |
|    2 |    3 | asf\dsadfs |

我的範例 mydata.csv 文件

2,3,asfdsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,asf\dsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,asf\dsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,a\sfdsadfs
2,3,asfdsadfs
2,3,asfdsadfs

引用自:https://dba.stackexchange.com/questions/99339