gpt4 book ai didi

mysql:在现有表中导入csv

转载 作者:行者123 更新时间:2023-11-29 13:47:58 24 4
gpt4 key购买 nike

假设您有一个 CSV 文件,其中仅包含文本且行结尾为 \r\n。像这样:

abc
def
hij
...
xyz

您想要将此文件导入现有的多列表中,其中每一行文本都需要进入一个特定(当前为空)列(让我们将其命名为needed)的一行 table 。像这样:

|一个 |乙| c |需要|
|foo|bar|baz|______|<-- abc
|foo|bar|baz|______|<-- def
...
|foo|bar|baz|______|<-- xyz

CSV 文件中的数据不需要按特定顺序插入。 needed 的哪个字段包含 CSV 中的哪些数据并不重要,只要导入每一行,一切都很好。

我尝试了很多事情,这让我发疯,但我不知道如何做到这一点。可以使用 LOAD DATA INFILE 和更新/替换/插入命令以某种方式解决这个问题吗?遇到这样的情况你会怎么做?用mysql也可以吗?或者我需要一个自定义的 php 脚本吗?

我希望这个问题足够清楚。如果您有任何不清楚的地方,请询问。

最佳答案

好的,给你...

将新列添加到 stuff人口数量为 1-600,000

ALTER TABLE stuff ADD COLUMN newId INTEGER UNIQUE AUTO_INCREMENT;

为您的 CSV 文件创建临时表

CREATE TABLE temp (
id INTEGER PRIMARY KEY AUTO_INCREMENT,
data VARCHAR(32)
);

我猜测数据所需的长度。

导入到临时表

LOAD DATA INFILE <wherever> INTO TABLE temp;

将数据添加到 stuff

UPDATE stuff AS s
JOIN temp AS t ON t.id=s.newId
SET s.needed=t.data;

整理一下

DROP TABLE temp;
ALTER TABLE stuff DROP COLUMN newId;

我必须承认我还没有测试过 LOAD DATA INFILEUPDATE报表,但我已经检查了所有的表摆弄。特别是,MySQL 将填充 newId包含连续数字的列。

我认为如果 stuff 中的行数不会有问题与 csv 文件中的行数不匹配 - 显然,会有几行带有 needed如果行数少于行数,则仍为 NULL。

关于mysql:在现有表中导入csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126438/

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