2013-07-19 39 views
0

我有一個超過100k記錄的CSV文件,我需要將某些字段插入到一個表中,並將其餘字段插入到另一個表中。LOAD DATA INFILE將數據同時插入兩個表中?

我知道我可以一個接一個地寫兩個LOAD DATA INFILE查詢來獲得這個,我試過了,它也可以正常工作。但我想知道是否可以做到以下幾點:

  1. 從csv文件中讀取一行。
  2. 取某些記錄,將它們插入表A.插入剩餘的表B.
  3. 閱讀下一行。重複2.

這可能嗎?我知道MySQL中的併發性在系統上真的很糟糕,但想知道我所有的選擇。

回答

1

行篩選器不可能與LOAD DATA INFILE

但是您可以使用它分析你的文件和grepawk一個小的shell腳本只是插入記錄符合您的標準:

cat file.txt | 
    awk '/\t.+/' | 
    mysql -u your_username -pyour_password \ 
     -e "LOAD DATA LOCAL INFILE '/dev/stdin' \ 
      IGNORE INTO TABLE table_name   \ 
      COLUMNS TERMINATED BY '\t'   \ 
      LINES TERMINATED BY '\n'   \ 
      (col1, col2);" \ 
     database_name 

其他更好的方法是加載在一個臨時的所有數據表並使用此表通過過濾器所需的數據來加載原始表中的數據。