gpt4 book ai didi

mysql - 如何让 MySQL 从包含 CSV 数据作为多列的 TEXT 列加载数据?

转载 作者:行者123 更新时间:2023-11-29 22:02:44 25 4
gpt4 key购买 nike

我们希望用户能够将 CSV 文件上传到我们的软件中,并将这些文件放入临时表中,以便对其进行分析并填充其他数据(上传进程 ID、用户名等)。

目前,我们的应用程序允许用户将文件上传到系统中,但文件最终以 MySQL 表中的 TEXT 值形式存在(技术上是 BLOB,但出于我们的目的,我将其称为 TEXT,作为我唯一的文件类型)涉及的是 CSV)。

用户上传 CSV 并且它变成 TEXT 值后,我想获取 TEXT 值并将其解释为具有多个列的 CSV 导入,以填充 MySQL 中的另一个表而不使用文件输出.

简单的插入选择将不起作用,因为文本被解析为一大块(应该如此)而不是多列。

insert into db2.my_table (select VALUE from db1.FILE_ATTACHMENT where id = 123456)

我发现的大多数示例都是将数据从数据库导出为文件,然后将其导入回,即类似于:

SELECT VALUE INTO OUTFILE '/tmp/test.csv'

后跟类似的内容:

LOAD DATA INFILE '/tmp/test.csv' INTO TABLE db2.my_table;

但如果可能的话,我想在 MySQL 中完成整个过程,而不使用上面的“SELECT INTO OUTFILE/LOAD DATA INFILE”方法。

有没有一种方法可以让 MySQL 将 TEXT 值视为多列而不是一个大块?或者我是否一直在导出到文件然后重新导入?

谢谢!

最佳答案

您的数据加载方法存在缺陷。不要将每一行保留在单个列中,而是将每个值保留在相应的列中。

例如,假设 csv 文件包含 n 列。创建一个包含 n 列的表。

LOAD DATA INFILE '/tmp/test.csv' 
INTO TABLE table_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS; // for ignoring header if present in csv file.

关于mysql - 如何让 MySQL 从包含 CSV 数据作为多列的 TEXT 列加载数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32464762/

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