2012-09-21 17 views
3

我有一個table_name這樣的:
MySQL的 - 在LOAD DATA INFILE多組

No | Name | Inserted_Date | Inserted_By 
===================================== 

,然後我有文件name.csv這樣

no,name 
1,jhon 
2,alex 
3,steve 

我想這些加載文件table_name使用這樣的語法:

LOAD DATA INFILE 'name.csv' INTO TABLE table1 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES 
??? 

問題是,我應該怎麼說在???這樣我就可以存儲數據是這樣的:

No | Name | Inserted_Date | Inserted_By 
===================================== 
1 | jhon | sysdate()  | me 
2 | ales | sysdate()  | me 
3 | steve | sysdate()  | me 

回答

16

我不明白列表inserted_dateinserted_by已經存在於您的表中。如果沒有比你可以乳寧LOAD DATA INFILE之前添加它們:

LOAD DATA INFILE 'name.csv' INTO TABLE table1 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES 
(@no, @name) 
set 
    no = @no, 
    name = @name, 
    inserted_date = now(), 
    inserted_by = 'me' 
+0

@Praditha:你能接受合適的答案嗎? – divinedragon

-1

有沒有辦法做到這一點用在mysql中加載數據的命令。數據必須位於您的輸入文件中。

如果您在Linux上,使用sed或類似工具將附加字段數據添加到您的輸入文件將會非常容易。

另一種方法是上傳文件,然後運行查詢以使用所需數據更新缺少的字段。

假設你想使用mysql用戶名值,你也可以在表上設置一個觸發器來填充這些字段。

-1
LOAD DATA Local INFILE 'name.csv' INTO TABLE table1 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES 
    SET inserted_date=CURRENT_DATE(), inserted_by='me' 
+1

與已經發布到這個問題的4歲的答案有何不同?它不會增加任何價值。 – miken32

+0

這是一個不同的答案。這個使用'LOAD DATA' **'Local' **'INFILE'而不是'LOAD DATA INFILE'。 – Pang

0

插入散裝數據庫在1分鐘內超過700萬條記錄(帶計算的超快查詢)

mysqli_query($cons, ' 
    LOAD DATA LOCAL INFILE "'.$file.'" 
    INTO TABLE tablename 
    FIELDS TERMINATED by \',\' 
    LINES TERMINATED BY \'\n\' 
    IGNORE 1 LINES 
    (isbn10,isbn13,price,discount,free_stock,report,report_date) 
    SET RRP = IF(discount = 0.00,price-price * 45/100,IF(discount = 0.01,price,IF(discount != 0.00,price-price * discount/100,@RRP))), 
     RRP_nl = RRP * 1.44 + 8, 
     RRP_bl = RRP * 1.44 + 8, 
     ID = NULL 
    ')or die(mysqli_error()); 
$affected = (int) (mysqli_affected_rows($cons))-1; 
$log->lwrite('Inventory.CSV to database:'. $affected.' record inserted successfully.'); 

RRP和RRP_nl和RRP_bl不在csv中,但我們計算出來並插入之後。

+0

請添加更多關於您的答案的描述和/或信息,以及它如何解決問題,以便其他人可以輕鬆理解,而無需澄清 – koceeng