Hello!Проблема: потребовалось записывать в SQL базу (сервер MySQL) данные. "Пикантность" в том, что строк _очень_ много, и хотелось бы добиться оптимизации этого процесса. Из описания MySQL C API можно выйти на два вызова mysql_query и real_query. Там же указано, что можно передавать только один sql statement за один вызов. Т.е.,
"select ...; select ...;" не пройдет... да и ';' использовать не надо ("нельзя"?), если присмотреться к тому же описанию.Делать по одному SQL оператору за вызов мне кажется расточительным -- парсинг строки, ее интерпретация и пр. пр. пр. сотни миллионов раз...
Ваши идеи?
p.s. Я не знаком с Postgresql C API, и, в принципе, не очень "привязан" к MySQL. Если будет алтернативный SQL сервер под UNIX, решающий эту проблему, то это и будет решением.
Спасибо!
>Проблема: потребовалось записывать в SQL базу
>(сервер MySQL) данные. "Пикантность" в
>том, что строк _очень_ много,а почему бы тебе не использовать "COPY ... FROM ... file" или скармливать через пайп в "COPY...FROM...STDIN" ?
>>Проблема: потребовалось записывать в SQL базу
>>(сервер MySQL) данные. "Пикантность" в
>>том, что строк _очень_ много,
>
>а почему бы тебе не использовать
>"COPY ... FROM ... file"В MySQL нет никакого COPY (Есть LOAD)
Кроме того, файл предварительно обрабатывается,
а делать второй файл (обработанный) крайне неудачная идея -- данных, как я уже сказал, очень
много.>или скармливать через пайп в
>"COPY...FROM...STDIN" ?опять же нет такого syntax и кроме прочего,
какая большая разница между этим, и real_query?
подозреваю что из STDIN было бы по кр. мере не быстрее, а скорее всего даже медленнее, поскольку
он сам работает через C API.впрочем, спасибо за желание помочь.
>В MySQL нет никакого COPY (Есть
>LOAD)Я использую PostgreSQL.
>какая большая разница между этим, и
>real_query?COPY описана в стандарте SQL92. В PostgreSQL разница ощутима, это так называемый прямой ввод блока данных в базу, т.е. postgresql backend напрямую включает блок данных в таблицу.
>>В MySQL нет никакого COPY (Есть
>>LOAD)
>
>Я использую PostgreSQL.
>
следовало сказать ;)
>>какая большая разница между этим, и
>>real_query?
>
>COPY описана в стандарте SQL92. В
>PostgreSQL разница ощутима, это так
>называемый прямой ввод блока данных
>в базу, т.е. postgresql backend
>напрямую включает блок данных в
>таблицу.
ок, есть такое ощущение, что стоит посмореть на
Postgresql C API...
/пошел смотреть ;)