开发者社区> 问答> 正文

如何将CSV文件导入MySQL表?

我有一个来自客户端的非标准化事件日志CSV,我试图将其加载到MySQL表中,以便可以将其重构为合理的格式。我创建了一个名为“ CSVImport”的表,该表的CSV文件的每一列都有一个字段。CSV包含99列,因此这本身就是一项艰巨的任务:

CREATE TABLE 'CSVImport' (id INT); ALTER TABLE CSVImport ADD COLUMN Title VARCHAR(256); ALTER TABLE CSVImport ADD COLUMN Company VARCHAR(256); ALTER TABLE CSVImport ADD COLUMN NumTickets VARCHAR(256); ... ALTER TABLE CSVImport Date49 ADD COLUMN Date49 VARCHAR(256); ALTER TABLE CSVImport Date50 ADD COLUMN Date50 VARCHAR(256); 该表上没有任何约束,并且所有字段都包含VARCHAR(256)值,但包含计数(以INT表示),是/否(以BIT表示),价格(以DECIMAL表示)和文本框()的列除外。由TEXT表示)。

我试图将数据加载到文件中:

LOAD DATA INFILE '/home/paul/clientdata.csv' INTO TABLE CSVImport; Query OK, 2023 rows affected, 65535 warnings (0.08 sec) Records: 2023 Deleted: 0 Skipped: 0 Warnings: 198256 SELECT * FROM CSVImport; | NULL | NULL | NULL | NULL | NULL | ... 整个桌子上满是NULL。

我认为问题在于文本内容包含多行,而MySQL正在解析文件,好像每一行都对应一个databazse行。我可以毫无问题地将文件加载到OpenOffice中。

clientdata.csv文件包含2593行和570条记录。第一行包含列名。我认为它是用逗号分隔的,并且文本显然是用双引号分隔的。

展开
收起
保持可爱mmm 2020-05-10 17:23:09 594 0
1 条回答
写回答
取消 提交回答
  • 您问题的核心似乎是将CSV文件中的列与表中的列进行匹配。

    许多图形化的mySQL客户端都具有用于此类事情的非常好的导入对话框。

    我最喜欢这份工作的是基于Windows的HeidiSQL。它为您提供了图形界面来构建LOAD DATA命令。您可以稍后以编程方式重用它。来源:stack overflow

    2020-05-10 17:23:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像