如何將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記錄,而且所有加載的數據似乎都在正確的位置。
如何將CSV文件導入MySQL表
揚帆大魚
2019-06-15 17:32:55