我之前提过这个问题,但是经过一番研究后,我意识到我找错了地方.这是情况.我创建此表:
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部分的链接:
解决方法:
您的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;
标签:csv,mysql
来源: https://codeday.me/bug/20191119/2033416.html