Таблица соединения PostgreSQL с хранилищем ключей и значений (например, Kyoto Cabinet)

Я не уверен, что это за вопрос.

Какие форматы импорта поддерживает Kyoto Cabinet?

Например, у меня есть соединительная таблица t, отношение "многие ко многим" в базе данных PostgreSQL. Размер t составляет около 285 миллионов.

t =
X, Y
-----
1, a
1, b
2, a
2, c
3, c
3, d
4, b
4, e

Каков самый простой и быстрый способ экспортировать, а затем импортировать в какое-нибудь хранилище ключей и значений, такое как Kyoto Cabinet?

Так что я заканчиваю с:

db = 
db[1] = [a,b]
db[2] = [a,c]
db[3] = [c,d]
db[4] = [b,e]

Мой любимый язык — Ruby.


person Martin Velez    schedule 15.08.2012    source источник
comment
Не уверен, в чем вопрос. вам нужен запрос, который выводит это как текст? Или какой-то другой тип данных? Дословно? Или только ценности?   -  person Erwin Brandstetter    schedule 16.08.2012
comment
@ErwinBrandstetter, я обновил свой вопрос: какие форматы импорта поддерживает Киотский кабинет?   -  person Martin Velez    schedule 20.08.2012
comment
Я могу помочь с Postgres, но у меня нет опыта работы с Kyoto Cabinet.   -  person Erwin Brandstetter    schedule 21.08.2012


Ответы (1)


Чтобы получить значения:

SELECT x, array_agg(y ORDER BY y)
FROM   t
GROUP  BY x;

Выдает array. Если вы хотите text, используйте string_agg(y, ',' ORDER BY y).
Вероятно, быстрее:

SELECT x, array_agg(y)
FROM  (SELECT * FROM t ORDER BY x,y) t
GROUP  BY x;
person Erwin Brandstetter    schedule 15.08.2012
comment
Этот sql-запрос мне очень помог. Kyoto Cabinet имеет метод setBulk для массовых вставок. Ваш запрос помог мне подготовить данные для вызова этого. - person Martin Velez; 21.08.2012