如何将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 CSVIm
port Date50 ADD COLUMN Date50 VARCHAR(256);表上没有约束,所有字段都保存VARCHAR(256)值,但包含计数(由int表示)、是/否(用位表示)、价格(用十进制表示)和文本缩略语(用文本表示)的列除外。我试图将数据加载到文件中: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: 198256SELECT * FROM CSVImport;| NULL | NULL | NULL
| NULL | NULL | ...整张桌子都装满了NULL.我认为问题在于,文本信息包含多行,MySQL正在解析文件,好像每一行新行都对应于一个数据库行一样。我可以毫无问题地将文件加载到OpenOffice中。csv文件包含2593行和570条记录。第一行包含列名。我认为它是逗号分隔的,文本显然是用双引号分隔的。最新情况:如有疑问,请阅读手册:http:/dev.mysql.com/doc/reflman/5.0/en/load-data.html我将一些信息添加到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记录,而且所有加载的数据似乎都在正确的位置。
3 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
LOAD DATA INFILE 'c:/country.csv' INTO TABLE country FIELDS TERMINATED BY ',' ENCLOSED BY '"'LINES TERMINATED BY '\n'IGNORE 1 ROWS
添加回答
举报
0/150
提交
取消