[Moscow.pm] Как работает DBI с "LOAD DATA LOCAL INFILE"

Sergey Zhuravlev sergey.zhuravlev на gmail.com
Пт Июн 19 01:38:34 PDT 2009


Привет.

Придумалось ещё два способа загружать данные, возможно кому-то будет интересно.

1. если нужно читать данные из STDIN, можно указать /dev/stdin
$dbh->do('load data local infile "/dev/stdin" into table tbl');
по идее, должно работать во всех юниксах

2. для любого дескриптора можно указать соответствующий файл из procfs
$dbh->do("load data local infile \"/proc/$$/fd/".fileno(FD)."\" into table tbl")
В линуксе работает, в остальных системах не знаю как устроена procfs

2009/6/17 Sergey Zhuravlev <sergey.zhuravlev на gmail.com>:
> Сделать можно, написав xs(или подпатчив DBD::mysql), и используя
> mysql_set_local_infile_handler из mysql api.
> Вызовом этой функции можно переопределить стандартные хэндлеры по
> открытию и, главное, чтению файла указанного в INFILE.
>
> Подробности здесь
> http://dev.mysql.com/doc/refman/5.0/en/mysql-set-local-infile-handler.html
>
> Но в большинстве случаем это будет овердоз, проще честный файл записать.
>
> зы Никто из знакомых эти хэндлеры не переопределял...
>
> 2009/6/16 Denis Evdokimov <evdokimov.denis на gmail.com>:
>> Пытаюсь понять, как сделать аналог "LOAD DATA LOCAL INFILE" только чтоб
>> вместо файла передать файловый дескриптор.
>> Возможно кто-то уже решал такую задачу?
>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>>
>


Подробная информация о списке рассылки Moscow-pm