我有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测井仪
<?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}
你的好意是需要的。
发布于 2020-01-31 05:59:28
我有csv文件,其中包含行,如下所示 HP 3日志;“09.12.2019 12:54:50”; 所需的输出如下所示 HP 3日志09.12.2019 12:54:50
LOAD DATA INFILE 'filename.ext'
INTO TABLE tablename
FIELDS TERMINATED by ';'
LINES TERMINATED BY '\n'
(col1, @col2, col3)
SET col2 = TRIM(BOTH '"' FROM @col2);或
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) )。
发布于 2020-01-31 05:21:41
你试过使用preg_split()吗?给它一个正则表达式,作为每个分隔符使用,例如‘/;“/。这应该给您一个数组,如:
HP 3 Log
null
09.12.2019 12:54:50
null
24
null此后,可以将所需的数组单元格放置到适当的列中。
您还可以传递"PREG_SPLIT_NO_EMPTY“标志,空列应该省略。
https://stackoverflow.com/questions/59998129
复制相似问题