2013-02-20 58 views
1

我有txt文件包含超過50000 records.those 4記錄(pid,#_ pro_used,未使用,選中)與tab空間分開。我想插入這些記錄到一個有5列(index,pid,#_ pro_used,notused,selected)..額外的一個(索引)列應該是包含記錄計數的主鍵。加載數據INFILE與txt文件

我已經使用這個命令..但它不工作。

LOAD DATA LOCAL INFILE 'D:/temp.txt' INTO TABLE temp_table (COUNT(pid),pid,#_pro_used,notused,selected); 

這可能嗎?或者我應該去觸發一下?

+0

歡迎來到StackOverflow!當你說它不起作用時,請給出你收到的任何詳細的錯誤信息,並給出你要加載的表的結構,以及幾行源數據來幫助我們。 – 2013-02-20 17:58:09

+0

這是它 - 錯誤代碼:1064 您的SQL語法有錯誤;請檢查第1行 – san88 2013-02-20 18:07:29

+0

處的「Count(pid),pid,#_ pro_used,notused,selected」附近使用的正確語法對應的MySQL服務器版本的手冊是否可以使用LOAD DATA INFILE命令插入列這是不是在數據導入源..如果沒有那麼我怎麼做it.please幫助 – san88 2013-02-20 18:12:03

回答

2

您不能使用COUNT(pid)來計算遠處插入的條目數。具有自動增量列創建一個表,並跳過「COUNT(PID)」的一部分,所以:

CREATE TABLE temp_table (
    idx INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    pid ... 
    pro_used ... 
    notused 
    selected 
); 

LOAD DATA LOCAL INFILE 'D:/temp.txt' 
INTO TABLE temp_table (pid,pro_used,notused,selected); 

剛一說明:您有一個名爲「NOTUSED」一欄,我以爲你要忽略。您可以在這裏使用一個用戶定義的變量,然後它將丟棄數據:

LOAD DATA LOCAL INFILE 'D:/temp.txt' 
INTO TABLE temp_table (pid,pro_used,@notused,selected); 
+0

仍然顯示錯誤您的SQL語法中有錯誤;檢查與您的MySQL服務器版本相對應的手冊,在第1行使用正確的語法 – san88 2013-02-20 18:40:56

+0

LOAD DATA LOCAL INFILE'D:/temp.txt' INTO TABLE temp_table (pid,#_ pro_used,notused,selected) ; – san88 2013-02-20 18:41:35

+0

創建表命令 - CREATE TABLE'temp_table'( 'indexid' INT(11)無符號NOT NULL AUTO_INCREMENT, 'pid' VARCHAR(5)NOT NULL, '#_pro_used' INT(11)DEFAULT NULL, 'notused' double DEFAULT NULL, 'selected' double DEFAULT NULL, PRIMARY KEY('indexid') ) – san88 2013-02-20 18:44:06