csv导入mysql linux_如何将CSV文件导入MySQL表
如何將CSV文件導(dǎo)入MySQL表
我有一個(gè)未規(guī)范化的事件-來自客戶端的日記CSV,我試圖將它加載到MySQL表中,以便將其重構(gòu)為正常的格式。我創(chuàng)建了一個(gè)名為“CSVImport”的表,該表對(duì)CSV文件的每一列都有一個(gè)字段。CSV包含99列,因此這本身是一項(xiàng)相當(dāng)艱巨的任務(wù):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)值,但包含計(jì)數(shù)(由int表示)、是/否(用位表示)、價(jià)格(用十進(jìn)制表示)和文本縮略語(用文本表示)的列除外。
我試圖將數(shù)據(jù)加載到文件中: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.
我認(rèn)為問題在于,文本信息包含多行,MySQL正在解析文件,好像每一行新行都對(duì)應(yīng)于一個(gè)數(shù)據(jù)庫行一樣。我可以毫無問題地將文件加載到OpenOffice中。
csv文件包含2593行和570條記錄。第一行包含列名。我認(rèn)為它是逗號(hào)分隔的,文本顯然是用雙引號(hào)分隔的。
最新情況:
我將一些信息添加到LOAD DATA聲明OpenOffice足夠聰明推斷,現(xiàn)在它加載正確的記錄數(shù):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記錄,而且所有加載的數(shù)據(jù)似乎都在正確的位置。
總結(jié)
以上是生活随笔為你收集整理的csv导入mysql linux_如何将CSV文件导入MySQL表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 玩转oracle 11g(32):pls
- 下一篇: linux cmake编译源码,linu