ЗАГРУЗКА ДАННЫХ INFILE / PHP MySQLi / Добавление дополнительных столбцов / значений для ввода и работа со значениями NULL - PullRequest
0 голосов
/ 16 января 2012

Я экспериментировал с LOAD DATA INFILE, и я бы хотел сделать пару вещей. Я не уверен, возможны ли они, или мне может понадобиться создать временную таблицу для загрузки.

Когда файл CSV загружается / вводится в моем приложении, я хотел бы иметь столбец с автоинкрементом для строк. Кроме того, я хотел бы добавить значение столбца в каждую строку, определяющее пользователя, который загрузил файл.

Я использую PHP / MySQLi для базы данных InnoDB.

У меня также могут быть пустые строки для нулевых значений в моих файлах CSV. Есть ли простой способ ввести эти значения как NULL в базу данных?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 16 января 2012

, чтобы достичь того, чего вы хотите, вам нужно предварительно создать таблицу программно вместе с функцией триггеров перед загрузкой в ​​нее данных.

поэтому сначала создайте таблицу с триггерами:

пример:

 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);
...