首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为csv文件设置多个字段终止

为csv文件设置多个字段终止
EN

Stack Overflow用户
提问于 2020-01-31 05:02:27
回答 2查看 42关注 0票数 0

我有csv文件,其中包含行,如下所示

HP 3日志;“09.12.2019 12:54:50”;

这张记录在一个牢房里。我想把它上传到数据库里。当我终止它时,它插入如下所示

''''''''Col1''''''|''''''''''''''''''''''Col2'''''''''''''''''''''''|Col3|

"HP 3日志“”09.12.2019 12:54:50“

当我终止它时,它会给出如下的结果

''''''''Col1''''''|''''''''''''''''''''''Col2'''''''''''''''''''''''|Col3|

"HP 3测井仪

代码语言:javascript
复制
<?php
$table = "data";
$cons= mysqli_connect("127.0.0.1", "root","","nestle_karachi") or die(mysql_error());
mysqli_options($cons, MYSQLI_OPT_LOCAL_INFILE, true);
mysqli_query($cons, '
    LOAD DATA LOCAL INFILE 'file.csv'
        INTO TABLE '.$table.'
        FIELDS TERMINATED by \'"\'
        LINES TERMINATED BY \'\n\'
')or die(mysql_error());

我希望将这三个值插入单独的列中,而不需要任何特殊字符。

所需的输出如下所示

''''''''Col1''''''|''''''''''''''''''''''Col2'''''''''''''''''|Col3|

"HP 3日志09.12.2019 12:54:50 \x{e 010}

你的好意是需要的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-31 05:59:28

我有csv文件,其中包含行,如下所示 HP 3日志;“09.12.2019 12:54:50”; 所需的输出如下所示 HP 3日志09.12.2019 12:54:50

代码语言:javascript
复制
LOAD DATA INFILE 'filename.ext'
INTO TABLE tablename 
FIELDS TERMINATED by ';'
LINES TERMINATED BY '\n'
(col1, @col2, col3)
SET col2 = TRIM(BOTH '"' FROM @col2);

代码语言:javascript
复制
LOAD DATA INFILE 'filename.ext'
INTO TABLE tablename 
FIELDS OPTIONALLY ENCLOSED BY '"'
FIELDS TERMINATED by ';'
LINES TERMINATED BY '\n'
(col1, col2, col3);

PS。如果(由于CSV中最后一个字段值之后的; char )服务器将因字段数量不匹配值的消息而失败,则在字段列表的末尾添加虚拟变量(分别为(col1, @col2, col3, @dummy)(col1, col2, col3, @dummy) )。

票数 1
EN

Stack Overflow用户

发布于 2020-01-31 05:21:41

你试过使用preg_split()吗?给它一个正则表达式,作为每个分隔符使用,例如‘/;“/。这应该给您一个数组,如:

代码语言:javascript
复制
HP 3 Log
null
09.12.2019 12:54:50
null
24
null

此后,可以将所需的数组单元格放置到适当的列中。

您还可以传递"PREG_SPLIT_NO_EMPTY“标志,空列应该省略。

分裂“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59998129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档