powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / как выполнить запрос?
24 сообщений из 24, страница 1 из 1
как выполнить запрос?
    #34794971
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как ввыполнить запрсо вида
Select a
From b
Where c in (...а тут около 2000 значений).
выдает ошибку "restricted data type attribute violation"
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34794990
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
загнать 2000 значение в таблицу
where c in (select values from temporary_table)
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34795028
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть возможность только чтения. Сколько значений можно проверять, может кто-то знает?
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34795379
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetic пишет:
> Как ввыполнить запрсо вида
> Select a
> From b
> Where c in (...а тут около 2000 значений).

Можно и прямо вот в таком виде. 2000 это немного, он справится.
Кстати не худо было бы выяснить, кто этот "он", о какой СУБД вообще речь.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34795410
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Можно и прямо вот в таком виде. 2000 это немного, он справится.
Кстати не худо было бы выяснить, кто этот "он", о какой СУБД вообще речь.
Posted via ActualForum NNTP Server 1.4

СУБД Sybase ASE v.15

Если вставляю в условие in все эти значения то выдает ошибку "restricted data type attribute violation"
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34795807
Veticесть возможность только чтения. Сколько значений можно проверять, может кто-то знает?

и даже в tempdb только для чтения? :)
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34795946
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetic пишет:
> СУБД Sybase ASE v.15
>
> Если вставляю в условие in все эти значения то выдает ошибку "restricted
> data type attribute violation"

Приведите полностью запрос и сообщение об ошибке.

По идее не должно быть такого.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34796044
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
самый рациональный вариант:
Рыжий Котзагнать 2000 значение в таблицу
where c in (select values from temporary_table)
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34796046
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя, я считаю правильным испольнять такие запросы через <join>
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34796051
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2000 значений поместить в #TempTable column <a>;

далее:

Select b.a
From b
join #TempTable on b.a = #TempTable.a

ведь, в полне возможно, что 'завтра' это будет не 2 000 записей - а 200 000...
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34796651
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rubber2000 значений поместить в #TempTable column <a>;

далее:
Код: plaintext
1.
2.
3.
Select b.a
From b
join #TempTable on b.a = #TempTable.a
ведь, в полне возможно, что 'завтра' это будет не 2 000 записей - а 200 000...

а как мне эти значения загрузить во временную таблицу? все значения сохранены в текстовом файле, може можно както загрузить из файла? Плюс, интересует еще как загрузить данные если поле не одно а два (в смысле сохранить соответствие)?
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34796828
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)
Создавать в tempdb Промежуточную таблицу TempTable,
а не #TempTable
2)
bcp tempdb..TempTable in data.txt -S<server_name> -Usa -P<password> -J iso_1 -c

Параметры bcp.exe в BOL
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34796854
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SAV4SAV1)
Создавать в tempdb Промежуточную таблицу TempTable,
а не #TempTable
2)
bcp tempdb..TempTable in data.txt -S<server_name> -Usa -P<password> -J iso_1 -c

Параметры bcp.exe в BOL
База открыта только на чтение
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34796881
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rubber2000 значений поместить в #TempTable column <a>;

далее:

Select b.a
From b
join #TempTable on b.a = #TempTable.a

ведь, в полне возможно, что 'завтра' это будет не 2 000 записей - а 200 000...

Может это можно выполнить через LOAD TABLE?
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34796935
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetic SAV4SAV1)
Создавать в tempdb Промежуточную таблицу TempTable,
а не #TempTable
2)
bcp tempdb..TempTable in data.txt -S<server_name> -Usa -P<password> -J iso_1 -c

Параметры bcp.exe в BOL
База открыта только на чтение - Что, и tempdb тоже только чтение ?
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34797090
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SAV4SAV - Что, и tempdb тоже только чтение ?
А сколько будет хранится TempTable?
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34797223
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetic SAV4SAV - Что, и tempdb тоже только чтение ?
А сколько будет хранится TempTable?

#TempTable - пока существует сессия, в которой создана #TempTable (или пока не drop table ...)

tempdb..TempTable - пока не drop table ..., или пока не перезагрузите ASE.

Видимо следует пояснить -

1) create table #Table(...,...) - будет создана Временная таблица в tempdb. Доступна только из
текущей сессии. Автоматически удалится с концом сессии, если не будет явно удалена.

2) create table tempdb..Table(...,...) - будет созданна "постоянная" таблица в tempdb, доступна
в соответствии с правами на неё

Для загрузки данных из файла посредством bcp - вариант 2). По стечении надобности в таблице
выполнить drop table tempdb..Table.
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34797314
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а возможно ли работать с "BCP" из "interactive SQL"
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34797394
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BCP - консольная утилита. А в "интерактивном sql" скорее нет, чем да (можно попробовать
выполнять bcp через xp_cmdshell).
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34797423
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получается :
- через тот же iSQL создаю в tempdb промежуточную таблицу TempTable
- через bcp загружаю в нее данные
- через тот же iSQL делаю необходимую мне выборку
- через iSQL удаляю временную таблицу

Правильно?
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34797533
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VeticПолучается :
- через тот же iSQL создаю в tempdb промежуточную таблицу TempTable
- через bcp загружаю в нее данные
- через тот же iSQL делаю необходимую мне выборку
- через iSQL удаляю временную таблицу

Правильно?
Да. И все это можно оформить в виде командных файлов и файлов, содержащих
sql скрипты. К примеру - cr_tab.cmd (для Windows)- содержащий

isql -U%1 -P%2 -S%3 -i cr_tab.sql -o cr_tab.log

cr_tab.sql - содержащий
use tempdb
go
create table TempTable(...)
go

Выполняем cr_tab.cmd sa password workserver - получаем в tempdb табличку, и т.д.
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34797655
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetic пишет:

> База открыта только на чтение

tempdb не может быть не открыта на запись.
О чем тебе и толкуют.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34797678
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> BCP - консольная утилита. А в "интерактивном sql" скорее нет, чем да
> (можно попробовать
> выполнять bcp через xp_cmdshell).

Слушайте, давайте не городить огород, да ?
Есть запрос с IN(...), он ДОЛЖЕН работать.
Надо разобраться просто почему он не работает.
Если человек не знает что такое tempdb, очень запросто
может быть, что у него там просто тупая описка в запросе и все.

Если уж так нужно НЕ ИСПОЛЬЗОВАТЬ IN (...) (хотя причин нет),
а использовать временную таблицу для фильтра,
можно вставить туда записи и простым INSERT, даже 20000 не
такой уж большой объем. А рекомендовать для решения такой
простой задачи BCP, да еще и запускать ее на сервере - это
уже как-то черезчур.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
как выполнить запрос?
    #34797690
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetic пишет:

> Правильно?

Неправильно.

- создаеш в tempdb таблицу #TempTable
- вставляешь в нее нужные ID-ы
- делаешь выборку
- удаляешь временную таблицу (не обязательно, если сразу после этого сделаешь
disconnect).

Все в одном простом клиентском соединении. ( напр. в ISQL ).



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / как выполнить запрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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