- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个来自客户端的非规范化事件日志 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 正在解析文件,就好像每一行都对应一个数据库行。我可以毫无问题地将文件加载到 OpenOffice。
clientdata.csv 文件包含 2593 行和 570 条记录。第一行包含列名。我认为它是逗号分隔的,文本显然是用双引号分隔的。
更新:
如有疑问,请阅读手册:http://dev.mysql.com/doc/refman/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
的记录,而且加载的数据似乎都没有放在正确的位置。
最佳答案
使用mysqlimport将表加载到数据库中:
mysqlimport --ignore-lines=1 \
--fields-terminated-by=, \
--local -u root \
-p Database \
TableName.csv
我在 http://chriseiffel.com/everything-linux/how-to-import-a-large-csv-file-to-mysql/ 找到了它
要使分隔符成为制表符,请使用 --fields-terminated-by='\t'
关于mysql - 如何将 CSV 文件导入 MySQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33619478/
我是一名优秀的程序员,十分优秀!