簡體   English   中英

從文本文件導入特定的列到mysql ..這可能嗎?

[英]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 ....

兩種最常見的處理方式:

  1. 將數據直接導入到臨時表中,將所需的內容移至“真實”表中,然后截斷該臨時表。
  2. 使用文本實用程序剪裁您所需的內容。

我選擇的文本實用程序是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM