mysql 导入csv空值_导入随机行中带有空白值的特定CSV文件时的MySQL问题

本文讨论了一个关于从CSV文件导入数据到MySQL数据库时遇到的问题。主要问题是CSV文件中的换行符导致数据格式出现错误,影响了主键列的数据展示。文章提供了两种解决方案:一是通过SELECT语句修正数据;二是修改LOAD DATA INFILE语句中的行终止符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值