Java mysql导入csv_如何将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表示)和文本blurbs(由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 .

我认为问题是文本blurbs包含多行,而MySQL正在解析文件,好像每个新行都对应一个数据行 . 我可以毫无问题地将文件加载到OpenOffice中 .

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

更新:

我在 LOAD DATA 语句中添加了一些信息,表明OpenOffice足够智能推断,现在它加载了正确数量的记录:

LOAD DATA INFILE "/home/paul/clientdata.csv"

INTO TABLE CSVImport

COLUMNS TERMINATED BY ','

OPTIONALLY ENCLOSED BY '"'

ESCAPED BY '"'

LINES TERMINATED BY '\n'

IGNORE 1 LINES;

但仍然有很多完整的 NULL 记录,并且没有任何加载的数据似乎在正确的位置 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值