6

私はこれがtable_name好きです:

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
4

5 に答える 5

24

列がテーブルにすでに存在するinserted_dateかどうかはわかりません。inserted_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'
于 2012-09-21T13:14:42.977 に答える
2

このような何かがそれを行います:

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

マニュアルを見てください:http: //dev.mysql.com/doc/refman/5.1/en/load-data.html

于 2012-09-21T13:17:00.670 に答える
0

1分で7000000を超えるバルクレコードをデータベースに挿入します(計算付きの超高速クエリ)

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に含まれていませんが、それが計算され、挿入後に計算されます。

于 2017-02-17T07:34:54.957 に答える
-1

mysqlのloaddataコマンドを使用してこれを行う方法はありません。データは入力ファイルに含まれている必要があります。

Linuxを使用している場合は、sedまたは同様のツールを使用して、入力ファイルにフィールドデータを追加するのは簡単です。

もう1つの方法は、ファイルをアップロードしてからクエリを実行し、不足しているフィールドを必要なデータで更新することです。

mysqlのユーザー名値を使用する場合は、挿入が発生したときにこれらのフィールドにデータを入力するトリガーをテーブルに設定することもできます。

于 2012-09-21T13:03:00.010 に答える
-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'
于 2016-08-08T20:59:50.037 に答える