[英]Import specific columns from text-file into mysql.. is this possible?
我剛剛從data.gov下載了一堆文本文件,文本文件中確實有一些我不需要的字段。
有沒有辦法導入列[1,3]並保留其余部分?
我想我將使用“在文件中加載數據”進行導入,但是在mysql頁面上沒有看到關於如何僅導入某些列的任何內容。 http://dev.mysql.com/doc/refman/5.0/en/load-data.html
字段由^分隔。 我很清楚,如果txt文件中的一行是
00111^first column entry^second column entry^this would be the 3rd column
我正在嘗試讓我的mysql表包含
first column entry | this would be the 3rd column
您可以使用以下命令導入特定的列:
LOAD DATA LOCAL INFILE 'yourFile' INTO TABLE table_name
FIELDS TERMINATED BY '^' (column1, @dummy, column3, @dummy);
將不需要的所有列放在@dummy中。
您總是可以創建一個帶有虛擬列的表,在加載文件后將其刪除(假設您不必非常頻繁地加載文件)。
像這樣:
LOAD DATA LOCAL INFILE '/path/to/file' INTO TABLE table_name
FIELDS TERMINATED BY '^' (dummy_column1, column1, dummy_column2, column2);
ALTER TABLE table_name DROP dummy_column1;
ALTER TABLE table_name DROP dummy_column2;
假設使用Unix平台,則可以在上游過濾字段。
cut -d^ -f2,4 mygovfile.dat > mytable.txt
要過濾第一列和第三列,然后使用首選方法導入。 例如
mysqlimport --local -uxxx -pyyy mydb --fields-terminated-by="^" mytable.txt ....
兩種最常見的處理方式:
我選擇的文本實用程序是awk。 一個最小的awk腳本-如果不做一些調整就可能對您不起作用-看起來像這樣。
$ awk 'BEGIN { FS="^";OFS=",";}{print $2, $4}' test.dat
first column entry,this would be the 3rd column
什么樣的調整? 它通常涉及照顧嵌入式逗號,單引號和雙引號。
這部分
BEGIN { FS="^";OFS=",";}{print $2, $4}
是整個awk程序。
awk岩石。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.