Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / bulk collect/forall / 16 сообщений из 16, страница 1 из 1
27.05.2008, 20:18
    #35338657
Author the new one
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
А что, аналогов в pl/pgsql нет?
...
Рейтинг: 0 / 0
27.05.2008, 20:23
    #35338664
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
А что это вообще такое?
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
27.05.2008, 20:38
    #35338677
Author the new one
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
Dan BlackА что это вообще такое?
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 


http://www.oracle.com/technology/oramag/oracle/04-jan/o14tech_plsql.html
...
Рейтинг: 0 / 0
27.05.2008, 21:45
    #35338738
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
Author the new onehttp://www.oracle.com/technology/oramag/oracle/04-jan/o14tech_plsql.htmlМнога буков и специальных оракловских терминов. Не осилил
А своими словами можете описать?
...
Рейтинг: 0 / 0
27.05.2008, 23:49
    #35338871
Author the new one
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
Dan Black Author the new onehttp://www.oracle.com/technology/oramag/oracle/04-jan/o14tech_plsql.htmlМнога буков и специальных оракловских терминов. Не осилил
А своими словами можете описать?

Пачкой выгрести данные/пачкой вставить. Что-то в духе COPY, только не из файла.
...
Рейтинг: 0 / 0
28.05.2008, 12:07
    #35339651
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
copy может не только из файла, вот например из
http://mail.python.org/pipermail/python-list/2005-February/308775.html

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
import pg
db = pg.DB('bind9', '192.168.192.2',  5432 , None, None, 'named', None)
db.query('create temp table fffz(i int,t text)')
db.query('copy fffz from stdin')
db.putline("3\t'the'")
db.putline("4\t'rain'")
db.endcopy()
db.query('commit')

Note that multiple columns must be separated by tabs ('\t') (unless you
specify "copy mytable with delimiter ...").


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
28.05.2008, 12:09
    #35339662
Author the new one
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
Ёшcopy может не только из файла, вот например из
http://mail.python.org/pipermail/python-list/2005-February/308775.html
stdin - тоже файл. А если мне откуда-то еще пачка приезжает? Напихать во временную таблицу без индексов и потом уже оттуда вставить - не шустрее будет, если по одной записи засовывать? Никто не пробовал?
...
Рейтинг: 0 / 0
28.05.2008, 12:35
    #35339769
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
Author the new onestdin - тоже файл. А если мне откуда-то еще пачка приезжает?не понимаю %)
Код: plaintext
1.
2.
while queue.wait_data_block():
    db.bulk_load(queue.data)
...
Рейтинг: 0 / 0
28.05.2008, 12:39
    #35339785
ChameLe0n
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
Author the new onestdin - тоже файл. А если мне откуда-то еще пачка приезжает? Напихать во временную таблицу без индексов и потом уже оттуда вставить - не шустрее будет, если по одной записи засовывать? Никто не пробовал?

Серьезно Вы к делу подошли. Который день с PG мучаетесь
...
Рейтинг: 0 / 0
28.05.2008, 12:40
    #35339791
ChameLe0n
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
Что Вас заставило отказаться от Oracle в пользу PG, если не секрет?
...
Рейтинг: 0 / 0
28.05.2008, 13:07
    #35339926
Author the new one
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
ChameLe0nСерьезно Вы к делу подошли. Который день с PG мучаетесь
Ну почему мучаюсь? Довольно приятный сервер. Да, многого нет (секционирования, compressed индексов, iot-таблиц, хинтов в запросах), но все же не ужас-ужас-ужас по имени mysql.

ChameLe0nЧто Вас заставило отказаться от Oracle в пользу PG, если не секрет?
Работу поменял.
...
Рейтинг: 0 / 0
28.05.2008, 16:59
    #35340867
Author the new one
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
Author the new one Ёшcopy может не только из файла, вот например из
http://mail.python.org/pipermail/python-list/2005-February/308775.html
stdin - тоже файл. А если мне откуда-то еще пачка приезжает? Напихать во временную таблицу без индексов и потом уже оттуда вставить - не шустрее будет, если по одной записи засовывать? Никто не пробовал?

Таки будет шустрее, если кому интересно. Но достаточно непринципиально; рассовывание в массив и использование insert into(...) values(...),(...),...(...); тоже порой шустрее; но и в том, и в другом случае разница не сногсшибательно велика (от 5% до 30%), да еще к тому же зависит от размеров пачки, и при неудачном раскладе получается даже хуже. В общем, не стоит колупаться.

Если у кого-то есть иные данные - был бы рад ознакомиться.
...
Рейтинг: 0 / 0
29.05.2008, 15:00
    #35343352
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
а у меня есть dll, которую писал специально для постгри, которая реализует часть функций этого булька. Работает через insert ()()()
Если интересно, могу сказать где ее взять. Если руководство разрешит, могу и исходники выложить :)
...
Рейтинг: 0 / 0
29.05.2008, 18:28
    #35344189
Author the new one
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
Zashibisа у меня есть dll, которую писал специально для постгри, которая реализует часть функций этого булька. Работает через insert ()()()
Если интересно, могу сказать где ее взять. Если руководство разрешит, могу и исходники выложить :)

А что, сильно шустрее получается?
...
Рейтинг: 0 / 0
30.05.2008, 13:06
    #35345654
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
Нет, работает медленнее, чем обычная COPY, но есть некоторые плюсы:
1) API - полностью совпадает с бульком для MS SQL Server
2) Можно перекачивать данные с локальной тачки на сервер через ODBC, т.е. не требуется предварительно закачивать файлы дампа на сервер, как в случае с COPY.

Вообще это делалось в рамках проекта SELTA@Etersoft - утилита которая позволяет 1С 7.7 работать с постгри (не реклама)
...
Рейтинг: 0 / 0
02.06.2008, 12:38
    #35348716
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bulk collect/forall
Author the new oneА что, аналогов в pl/pgsql нет?
Че-то рылся в рассылках ПГ, вот нарыл:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
NTT OSS Center is very pleased to release pg_bulkload- 2 . 3 . 0  that
supports the PostgreSQL  8 . 3 . You can download the latest version from

    http://pgfoundry.org/frs/?group_id= 1000261 

The new features are the following:

  - Works on PostgreSQL  8 . 3  and  8 . 2  by the same package.
  - Support a native Windows platform.
  - Add a non-direct load mode which use shared buffer and WAL.
  - Enable TOAST.
  - Support sorting colomn order and skipping column.
  - Support binary input in fixed length file type.
  - Support to keep trailing spaces in character strings.
  - Support to skip the head of input records.
  - Support the number of records to be loaded.


Please visit online manual site:

    http://pgbulkload.projects.postgresql.org/

Это боян апрельский, т.е. может уже че-то и дальше пошло.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / bulk collect/forall / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]