Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Массивы в таблице
|
|||
|---|---|---|---|
|
#18+
Добрый день. Не могу разобраться с инсертом массива в таблицу и его выборкой оттуда, подскажите, плиз как это сделать ? CREATE TABLE test ( name text, user_id integer[], ); код (perl): #!/usr/bin/perl -w use SQLayer; my $D = SQLayer -> new(database =>$connect{'database'},user=>$connect{'user'}, password=>$connect{'password'}); my @arr=('4','5','6','7','8'); $D->proc("INSERT INTO test VALUES ('main','{@arr}')"); ---- можно ли вставить в это поле массив (у меня не получилось =( ) и в случае использования SQLayer каким методом можно из это го поля (user_id) выбрать массив (my $new_arr=$D-> ??) заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 12:27 |
|
||
|
Массивы в таблице
|
|||
|---|---|---|---|
|
#18+
помогите плиз... хотя бы что читать =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 13:51 |
|
||
|
Массивы в таблице
|
|||
|---|---|---|---|
|
#18+
dio_blessДобрый день. Не могу разобраться с инсертом массива в таблицу и его выборкой оттуда, подскажите, плиз как это сделать ? CREATE TABLE test ( name text, user_id integer[], ); код (perl): #!/usr/bin/perl -w use SQLayer; my $D = SQLayer -> new(database =>$connect{'database'},user=>$connect{'user'}, password=>$connect{'password'}); my @arr=('4','5','6','7','8'); $D->proc("INSERT INTO test VALUES ('main','{@arr}')"); ---- можно ли вставить в это поле массив (у меня не получилось =( ) и в случае использования SQLayer каким методом можно из это го поля (user_id) выбрать массив (my $new_arr=$D-> ??) заранее спасибо. Не скажу я тебе ничего по перлу, но раз никто не отвечает.... Похоже вся фишка в том, что перл не может запихать массив в этот инсерт. Да я вообще плохо могу себе такое представить, как должен передаться массив в обычную текстовую строку. Поэтому я тебе рекомендую попробовать выполнить: $D->proc("SELECT '{@arr}'"); Что получается? Вообще, должно работать вот так: $D->proc("INSERT INTO test VALUES ('main',ARRAY[1, 2, 3])"); Или вот так. $D->proc("INSERT INTO test VALUES ('main',String_To_Array('1,2,3', ','))"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 14:56 |
|
||
|
Массивы в таблице
|
|||
|---|---|---|---|
|
#18+
INSERT INTO test_arr VALUES ('main',ARRAY[1, 2, 3]) - да так, конечно, работает но для такого вида инсерта мне надо мой перловый массив раскладывать в строку, а привыборке из базы - опять сплитить полученную строку в массив... тогда я не понимаю смысла в постгресовском типе данных array - зачем он нужен, если работать как с массивом с ним нельзя(на выходе - всё равно строка...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:23 |
|
||
|
Массивы в таблице
|
|||
|---|---|---|---|
|
#18+
или я чего то не понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:31 |
|
||
|
Массивы в таблице
|
|||
|---|---|---|---|
|
#18+
Люди! если я чего не так пишу - направтье, плиз на путь истинный, но очень надо разобраться.Помогите =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 18:52 |
|
||
|
Массивы в таблице
|
|||
|---|---|---|---|
|
#18+
dio_blessЛюди! если я чего не так пишу - направтье, плиз на путь истинный, но очень надо разобраться.Помогите =) На сколько я знаю - то массивы постгреса это его внутрення штука и наружу не сильно выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 19:29 |
|
||
|
Массивы в таблице
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron dio_blessЛюди! если я чего не так пишу - направтье, плиз на путь истинный, но очень надо разобраться.Помогите =) На сколько я знаю - то массивы постгреса это его внутрення штука и наружу не сильно выходит. Ну, почему не сильно. На сях можно выдернуть, причем в виде массива в том числе. А вот Perl он не ожидает массива с SQL'ного сервака (потому что их в стандарте SQL нет). Собственно и запихать массив в строку запроса для него непросто. Не понимает, зачем. Вообще, у себя я массивы использую в основном только на бэкофисе, потому что фокс тоже воспринимает все как BLOB с текстовым содержимым. В крайнем случае выбираю '(' || Array_To_String(Any_Array, ', ') || ')' а потом уже этот результат использую в IN для сквозного запроса (на фронтэнде или бэкэнде без бани). Не больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 07:16 |
|
||
|
Массивы в таблице
|
|||
|---|---|---|---|
|
#18+
SQLayer вроде бы надстройка над DBI, поэтому там не должно быть специфичных для постреса фич. С постресовым массивом нельзя (пока?) работать как с массивом из перла. DBD-Pg-1.49/t/05arrays.tSKIP: { # XXX Until all the array stuff is working, skip all tests. # Should really be a TODO, but these tests will die. skip 'Array support not implemented', 15; # Insert into array my $values = [["a,b", 'c","d', "e'", '\\"'], ['f', 'g', 'h']]; ok($dbh->do(q{INSERT INTO dbd_pg_test (id, name, testarray) VALUES (?, ?, ?)}, {}, 1, 'array1', $values), 'insert statement with references'); Посмотрите также эту тему . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 10:25 |
|
||
|
Массивы в таблице
|
|||
|---|---|---|---|
|
#18+
не скажу что силёнв перле, скорее наобород, знаю что он есть, но на пхп есть такая ф-я, которая дублируется и в асп, в перле что-то тоже должно быть - serialize(); вот можно просто запихнть массив в строку а когда достаёшь из базы то unserialize(); поищи подобное н перле. К стати объекты и прочее она тоже запихает в строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 02:21 |
|
||
|
Массивы в таблице
|
|||
|---|---|---|---|
|
#18+
KisaNetikне скажу что силёнв перле, скорее наобород, знаю что он есть, но на пхп есть такая ф-я, которая дублируется и в асп, в перле что-то тоже должно быть - serialize(); вот можно просто запихнть массив в строку а когда достаёшь из базы то unserialize(); поищи подобное н перле. К стати объекты и прочее она тоже запихает в строкуДа, в перле для этого есть модуль Storable, как я писал в теме, на которую дал ссылку. Но автор, насколько я понял, хотел native implicite преобразование между постгресовым массивом и перловым массивом. А с использованием Storable мы получим преобразование: перловый массив <-Storable-> перловая строка <-> постгресовый varchar. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 09:38 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34275700&tid=2005733]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
78ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 443ms |

| 0 / 0 |
