2012-01-15 18 views
0

私はLOAD DATA INFILEを実験していますが、できることがいくつかあります。可能かどうか、アップロードのために一時テーブルを作成する必要があるかどうかはわかりません。LOAD DATA INFILE/PHP MySQLi /入力用の追加の列/値の追加とNULL値の扱い

アプリケーションでCSVファイルをアップロード/入力すると、その行に自動インクリメント列が必要です。また、ファイルをアップロードしたユーザーを識別する列値を各行に追加したいと思います。

私はInnoDBデータベースでPHP/MySQLiを使用しています。

私のCSVファイルには、空の文字列がnull値として含まれている場合があります。これらの値をNULLとしてデータベースに入力する簡単な方法はありますか?

ありがとうございました!

答えて

0

あなたが望むものを実現するには、まずデータを読み込む前にトリガ関数と共にテーブルをプログラムで事前に作成する必要があります。したがって、

、トリガと最初のテーブルを作成します。

例:

CREATE TABLE foo (
    id INT NOT NULL AUTO_INCREMENT, 
    fooitems TEXT, 
    PRIMARY KEY (id) 
); 

CREATE TRIGGER fooblank2null 
BEFORE INSERT ON foo 
FOR EACH ROW 
SET NEW.fooitems=IF(TRIM(NEW.fooitems)='',NULL,NEW.fooitems); 

をトリガーが動作するかどうかテストする:

INSERT INTO foo (fooitems) 
VALUES 
('i'),(''),('am'),('foo'),(' '),('.'); 

あなたは今、特定の列にデータをロードすることができます。

例:助けを

LOAD DATA 
INFILE 'foo.txt' 
INTO TABLE foo 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
(fooitems); 
+0

ありがとう!ただし、挿入された各行の列に別のint値を挿入して、エントリの元のファイルを追跡する方法はありますか? – christian

+0

私は最終的に追加のset節でそれを把握しました。ありがとう! – christian

関連する問題