2016-02-03 56 views
3

我之前提出過這個問題,但是在做了一些研究後,我意識到我找錯了地方。這是情況。我創建該表:導入空白值隨機行的特定CSV文件時出現MySQL問題

CREATE TABLE PC_Contacts 
(
POC VARCHAR(255) PRIMARY KEY NOT NULL, 
Phone_1 VARCHAR(255), 
Phone_2 VARCHAR(255) 
); 

我CSV文件導入到MySQL它具有值我的表PC_Contacts:導入這個樣子的後

USE Network 
LOAD DATA INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\PC_Contacts.csv' 
INTO Table PC_Contacts 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 1 ROWS; 

我的輸出:

+------------------+--------------+---------------+ 
| POC    | Phone_1  | Phone_2  | 
+------------------+--------------+---------------+ 
|April Wilson | 123-456-5000 | 123-456-5006 
      |  | 123-456-2222 | 
      |  | 123-456-5331 | 
      |  | 123-456-7772 | 
|Anton Watson | 123-456-1258 | 123-456-6005 
|Elisa Kerring | 123-456-1075 | 123-456-4475 

現在您可能還記得,根據我的代碼輸入,POC是PK。我在原始CSV文件中爲每一行提供了一個值。但是,如您所見,任何在右側沒有任何價值的東西都會影響左列的值。但是,如果我查看GUI並在此處拉起表格,則會顯示單元格填充了值,因此數據就在那裏。如果我把在XXX-XXX-XXXX,它會解決這個問題:

+------------------+--------------+---------------+ 
    | POC    | Phone_1  | Phone_2  | 
    +------------------+--------------+---------------+ 
    |April Wilson | 123-456-5000 | 123-456-5006 
    |Nicky Nite  | 123-456-2222 | xxx-xxx-xxxx 
    |Nicole   | 123-456-5331 | xxx-xxx-xxxx 
    |Becky   | 123-456-7772 | xxx-xxx-xxxx 
    |Anton Watson | 123-456-1258 | 123-456-6005 
    |Elisa Kerring | 123-456-1075 | 123-456-4475 

顯然,我的意圖是讓我可以看到的價值,而不必在命令行應用特殊格式。有沒有特殊的SELECT命令?

這裏是將.csv的部分鏈接,按要求:

https://drive.google.com/file/d/0B0MMqHN75RpGdkZhcGp0SWtmams/view?usp=sharing

+0

你能附上您的CSV文件的一部分? – Inpego

+0

上面加了^^。 – OfWolfAndMan

回答

3

您的CSV文件中包含的行的末尾,打破格式化新行回車。用途:

SELECT POC, Phone_1, REPLACE(Phone_2, '\r', '') AS Phone_2 FROM PC_Contacts; 

或更改導入查詢,如下所示:

USE Network 
LOAD DATA INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\PC_Contacts.csv' 
INTO Table PC_Contacts 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 ROWS; 

而且使用簡單SELECT

SELECT * FROM PC_Contacts; 
+0

工作正常!謝謝! – OfWolfAndMan