我之前提过这个问题,但是经过一番研究后,我意识到我找错了地方.这是情况.我创建此表:

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐