gpt4 book ai didi

php - 如何从 CSV 文件中拆分 php 中的字符串并插入数据库中的多行?

转载 作者:行者123 更新时间:2023-11-29 02:52:19 28 4
gpt4 key购买 nike

.csv 文件中的数据如下所示:

id | protocol |
1 | SNMP GET |

如何在 .csv 文件中拆分行协议(protocol) (SNMP GET) 中的数据以将它们存储在数据库中的不同行中?它应该是这样的:-

id | protocol_type | protocol |
1 | SNMP | GET |

最佳答案

我试图想出一种简单的方法来简单地执行一次 LOAD DATA 并提取出您想要的两个协议(protocol)列,但无法这样做。下一个最好的事情可能是做一个 LOAD DATA然后使用 MySQL 的字符串函数从原始数据中创建您想要的列。

LOAD DATA INFILE 'file.csv'
INTO TABLE protocol (id, protocol_orig)
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\r\n'

接下来创建你想要的两列:

ALTER TABLE protocol ADD protocol_type VARCHAR(55);
ALTER TABLE protocol ADD protocol VARCHAR(10);

现在填充两个新的协议(protocol)列:

UPDATE protocol
SET protocol_type = SUBSTRING_INDEX(SUBSTRING_INDEX(protocol_orig, ' ', 1), ' ', -1),
protocol = SUBSTRING_INDEX(SUBSTRING_INDEX(protocol_orig, ' ', 2), ' ', -1);

最后,如果您不再需要原始列 protocol_orig,您可以将其删除:

ALTER TABLE protocol DROP COLUMN protocol_orig;

这是 UPDATE 语句中使用的逻辑演示。对于您可能只有一个协议(protocol)类型但缺少协议(protocol)的情况,它是健壮的:

SQLFiddle

关于php - 如何从 CSV 文件中拆分 php 中的字符串并插入数据库中的多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34389883/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com