猿问

如何将CSV文件导入MySQL表

如何将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记录,而且所有加载的数据似乎都在正确的位置。


扬帆大鱼
浏览 1077回答 3
3回答

拉丁的传说

我导入了200多行的最简单方法是在phpmyadmin SQL窗口中的命令下面我有一个简单的国家表,其中有两列-Country,Country Name这是.csv数据这是命令:LOAD DATA INFILE 'c:/country.csv' INTO TABLE country  FIELDS TERMINATED BY ',' ENCLOSED BY '"'LINES TERMINATED BY '\n'IGNORE 1 ROWS记住一件事,永远不要出现在第二栏中,否则您的导入将停止。
随时随地看视频慕课网APP
我要回答