powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / IQ и прокси на ASE
11 сообщений из 11, страница 1 из 1
IQ и прокси на ASE
    #35714332
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем.
Вопрос по IQ и связке с ASE.
Работаем с АСЕ 12.5.0.3. Решил хотябы посомтреть на IQ. Наткнулся на такую интересность. Может быть подскажете в чем грабли.
Итак.
Есть АСЕ
Adaptive Server Enterprise/12.5.3/EBF 13339 ESD#7/P/x86_64/Enterprise Linux/ase1253/1951/64-bit/OPT/Fri Mar 24 00:39:11 2006
Есть IQ
Adaptive Server IQ/12.6.0/041214/P/GA/MS/Windows 2000/32bit/2004-12-14 07:07:24

На АСЕ создал таблицу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table dbo.mike(pkey numeric( 18 , 0 ) identity not null,
    val1 nvarchar( 10 ),
    val2 nvarchar( 99 ),
    val3 nvarchar( 100 ),
    val4 nvarchar( 250 ),
    val5 varchar( 10 ),
    val6 varchar( 99 ),
    val7 varchar( 100 ),
    val8 varchar( 250 ))
    
insert into mike(val1,val2,val3,val4,val5,val6,val7,val8)
values('нварчар 10','нварчар 99','нварчар 100','нварчар 250','варчар 10','варчар 99','варчар 100','варчар 250')

На IQ создал ремоут сервер на АСЕ и создал прокси таблицу на таблицу майк.
Затем делаю
Код: plaintext
select * from mike
Вот что получаю.

pkey,val1,val2,val3,val4,val5,val6,val7,val8
1,'нварчар 10','нваÑ\x80Ñ\x87аÑ\x80 99','нваÑ\x80Ñ\x87аÑ\x80 100','нваÑ\x80Ñ\x87аÑ\x80 250','варча','варчар 99','варчар 100','варчар 250'

То есть длинные нварчаровые поля возвращаются белибердой.
Везде (и в АСЕ и в IQ) - utf8.
...
Рейтинг: 0 / 0
IQ и прокси на ASE
    #35715302
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sybase IQ does not support the Adaptive Server Enterprise data type nvarchar, but you can insert data from an ASE database column of data type nvarchar using INSERT...LOCATION to character type columns.
...
Рейтинг: 0 / 0
IQ и прокси на ASE
    #35715363
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть вообще без прокси таблиц? Прокси естественно создается с варчарами (в три раза большими).

Если не сложно - вопрос тогда по синтаксису.
Я создал у себя
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE "DBA"."mike_new" (
	"pkey" numeric( 18 , 0 ) NOT NULL,
	"val1" varchar( 30 ) NOT NULL,
	"val2" varchar( 297 ) NOT NULL,
	"val3" varchar( 300 ) NOT NULL,
	"val4" varchar( 750 ) NOT NULL,
	"val5" varchar( 10 ) NOT NULL,
	"val6" varchar( 99 ) NOT NULL,
	"val7" varchar( 100 ) NOT NULL,
	"val8" varchar( 250 ) NOT NULL
) ;
в IQ.

Затем пишу
Код: plaintext
1.
2.
3.
insert into dba.mike_new(pkey,val1,val2,val3,val4,val5,val6,val7,val8)
location 'test.my_db'
packetsize  512 
select pkey,val1,val2,val3,val4,val5,val6,val7,val8 from dbo.mike
Выдает ошибку. синтакс еррор рядом с селектом.
Вроде как все по документации
...
Рейтинг: 0 / 0
IQ и прокси на ASE
    #35715370
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В последнем сообщении - test - наименование ремоутсервера в айкью, который ссылается на мою АСЕ.
my_db - база на сервере АСЕ.
таблица там - dbo.mike
...
Рейтинг: 0 / 0
IQ и прокси на ASE
    #35715494
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыли фигурные скобки для select

insert into dba.mike_new(pkey,val1,val2,val3,val4,val5,val6,val7,val8)
location 'test.my_db'
packetsize 512
{ select pkey,val1,val2,val3,val4,val5,val6,val7,val8 from dbo.mike }

P.S. также разумеется логин/пароль под которым вы в IQ, должен присутствовать в ASE
...
Рейтинг: 0 / 0
IQ и прокси на ASE
    #35715833
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MichaelTimВ последнем сообщении - test - наименование ремоутсервера в айкью, который ссылается на мою АСЕ.
my_db - база на сервере АСЕ.
таблица там - dbo.mike

test это не имя в remote servers - это определение сервера в файле interfaces (sql.ini). т.к. insert location подключается через openclient
...
Рейтинг: 0 / 0
IQ и прокси на ASE
    #35716185
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так получилось!
Спасибо, буду копаться дальше.
...
Рейтинг: 0 / 0
IQ и прокси на ASE
    #35716188
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
действительно у меня получилось, так как совпало с именем из sql.ini
...
Рейтинг: 0 / 0
IQ и прокси на ASE
    #35722282
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот что заметил когда начал дальше разбираться. Большинство полей перенеслось null-ами :(
причем попробовал создать еще одну копию таблицы в IQ и заново перенести использую инсерт .. локейшн - тот же результат. Все, что переносится - переносится нормально по русски из полей нварчар.
Но точно не перенеслось ни одно поле varchar... и одно небольшое nvarchar(12).
Перенеслись numeric, int, decimal, nvarchar от 50 и выше длины.
Все остальное - NULL.
В чем могут быть грабли?
...
Рейтинг: 0 / 0
IQ и прокси на ASE
    #35829359
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поднимаю опять тему.
Поставил 12.7 IQ.
Теперь insert location успешно работает.
Наткнулся на интересную ошибку.
IQ, remote server на ASE, создал несколько прокси таблиц. Тест конекшна проходит на ура.
В isql на IQ делаеш какуюто выборку из этих таблиц - на ура.
В процедуре пытаюсь сделать джоины с этими таблицами - все. Выполнение останавливается. На АСЕ нахожу появившийся конект с этой машины. Но запросов с него нет.
Что делать - ума не приложу. Никто не наступал на такое?
...
Рейтинг: 0 / 0
IQ и прокси на ASE
    #35835894
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MichaelTimПоднимаю опять тему.
Поставил 12.7 IQ.
Теперь insert location успешно работает.
Наткнулся на интересную ошибку.
IQ, remote server на ASE, создал несколько прокси таблиц. Тест конекшна проходит на ура.
В isql на IQ делаеш какуюто выборку из этих таблиц - на ура.
В процедуре пытаюсь сделать джоины с этими таблицами - все. Выполнение останавливается. На АСЕ нахожу появившийся конект с этой машины. Но запросов с него нет.
Что делать - ума не приложу. Никто не наступал на такое?
Так как IQ является DWH и изначально предназначен для работы с большими объемами данных, то поведение его частенько забавно с точки зрения людей, привыкших к работе с OLTP. Например, что сделает OLTP, если в результате выполнения запроса или вставки записей у него кончится место в базе данных или во временном пространстве ? ;) Правильно - он откатит транзакцию с ошибкой и ругнется. Что сделает в этой ситуации сервер хранилища данных ? Он напишет в консоль сообщение "Место кончилось, пожалуйста добавьте место" и ... подождет. Ибо откатывать транзакцию или откладывать выполнение запроса, где возможно уже было записано или пересмотрено пару террабайт данных выглядит не разумным. Поэтому мой совет - почаще открывайте консоль IQ когда он вдруг замолчал и смотрите, а что он там пишет, вдруг он просто Вас ждет ;)

P.S. Еще совет - в IQ есть прокси таблицы, но не потому что они ему так уж нужны, а потому что он крутится под управлением движка ASA, а значит и имеет все то, что имеет версия ASA, включенная в данную версию IQ (например для IQ 12.7 встроена ASA 9). Не надо мучать сервер DWH прокси таблицами, не любят они этого, ибо не предназначены. Стандартный подход организации работы хранилища данных - данные преобразовываются и заливаются через ETL средства или в текстовом формате CSV. То есть наиболее оптимальным в Вашем случае было бы настроить в ASE к примеру ежедневную выгрузку данных через BCP в CSV и их загрузку через штатную команду IQ LOAD TABLE. Попробуйте, это может оказаться проще и эффективнее, чем мучать прокси таблицы.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / IQ и прокси на ASE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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