我有一个来自客户端的非标准化事件日志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条记录。第一行包含列名。我认为它是用逗号分隔的,并且文本显然是用双引号分隔的。
您问题的核心似乎是将CSV文件中的列与表中的列进行匹配。
许多图形化的mySQL客户端都具有用于此类事情的非常好的导入对话框。
我最喜欢这份工作的是基于Windows的HeidiSQL。它为您提供了图形界面来构建LOAD DATA命令。您可以稍后以编程方式重用它。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。