powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Загрузка в IQ
25 сообщений из 28, страница 1 из 2
Загрузка в IQ
    #36015119
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может ктото сталкивался и подскажет в чем дело.
Есть АСЕ
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
Sybase IQ/12.7.0/080707/P/ESD 5/MS/Windows 2000/32bit/2008-07-07 14:07:51

Клиентская машина доступа к АСЕ - вынь.

Создаю на АСЕ тестовую таблицу.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create table dbo.iq_test(
pkey numeric( 18 , 0 ) identity, 
id numeric( 18 , 0 ) not null,
value nvarchar( 10 ) not null,
b bit not null,
constraint it_PK primary key nonclustered(pkey)
)
go
insert into dbo.iq_test(id,value,b) values( 13 ,'первая запись', 0 )
go
insert into dbo.iq_test(id,value,b) values( 17 ,'вторая запись', 1 )
go

Затем выгружаю ее бсп-ёй
bcp my_db.dbo.iq_test out iq_test_utf8.txt -STest -Umichael -t, -Jutf8 -r\r\n -c

Получаю красивый файлик

Затем на машине с установленным IQ пытаюсь загрузить.
Создаю таблицу
Код: plaintext
1.
2.
3.
4.
5.
6.
create table dba.iq_test(
pkey numeric( 18 , 0 ) default autoincrement, 
id numeric( 18 , 0 ) not null,
value varchar( 20 ) not null,
b bit not null,
constraint it_PK primary key nonclustered(pkey)
);


Грузим
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
set option identity_insert='dba.iq_test';
load table dba.iq_test
    (    pkey ',',
    id ',',
    value      ',',
    b   '\r\n'
)
from 'C:\\IQ\\load\\biplane\\iq_test_utf8.txt'
format ascii
quotes off
escapes off
message log 'c:\\iq\\load\1.msg'
row log 'c:\\iq\\load\1.row'
;
set option identity_insert='';

В dbisql - никаких ошибок. Но ничего не грузится.
Смотрим лог базы

In table 'iq_test', the full width insert of 4 columns will begin at record 1.
I. 05/29 09:38:20. 0000000143 Insert Started:
I. 05/29 09:38:20. 0000000143 iq_test
I. 05/29 09:38:20. 0000000143 [20918]: Portions of the insert/load will be single threaded.
I. 05/29 09:38:20. 0000000143 [20618]: Warning: Partial input record (68 bytes) skipped at EOF (O/S 13). 0 rows read.
I. 05/29 09:38:20. 0000000143 [20895]: Insert Pass 1 completed in 0 seconds.
I. 05/29 09:38:20. 0000000143 [20895]: Insert Pass 2 completed in 0 seconds.
I. 05/29 09:38:20. 0000000143 [20834]:
0 records were inserted into 'iq_test'.

I. 05/29 09:38:20. 0000000143 [20896]: Insert for 'iq_test' completed in 0 seconds. 0 rows inserted.

Подскажите плиз куда рыть дальше? Что делаю не так?
Пробовал и разные разделители столбцов и строк.. Теже грабли.
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36015138
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл сказать
В АСЕ и IQ - utf8.
Заранее благодарен за любую помощь
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36016050
Peter Kirillow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
COMMIT после загрузки не пробовали ?
типа так

load table
....
message log 'c:\\iq\\load\1.msg'
row log 'c:\\iq\\load\1.row'
go
COMMIT
go
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36016113
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дык при чем жеж коммит, когда он даже не читает записи из файла.. :(
судя по логу самого IQ.
Что уже не пробовал - пока не понятно что делать..
И главное - почему такое происходит.
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36016430
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MichaelTim
Затем выгружаю ее бсп-ёй
bcp my_db.dbo.iq_test out iq_test_utf8.txt -STest -Umichael -t, -Jutf8 -r\r\n -cвот здесь я вижу что выгрузка идет в UTF8. Рискну предположить что и файлик получается в UTF8.

MichaelTimГрузимА вот дальше я не вижу чтобы файлик был описан как UTF8. А раз он так не описан, значит он будет читаться как обычный ASCII со всеми вытекающими.
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36016531
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правильно предполагаеш :)
Файл ессно получается в утф-е.
Яж писал в следующем сообщении чот кодировка в IQ - utf8...
Так что тут все нормально...
из того что нарыл - установка опции
escape_character='on' - помогла.
хотя как по мне - шаманство...
из сообщений сервака хрен поймеш что делать :(
нашел на ньюсах sybase.public.iq
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36016693
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MichaelTimЯж писал в следующем сообщении чот кодировка в IQ - utf8...Так то ж в самих таблицах. А внешние файлы обрабатываются как будто они содержат данные в кодировке по умолчанию. А вот что там по умолчанию предполагается - вопрос сложный.

MichaelTimиз того что нарыл - установка опции
escape_character='on' - помогла.
хотя как по мне - шаманство...Действительно шаманство. Вообще-то, если верить документации, то надо в load добавить опции FORMAT TEXT ENCODING 'UTF-8'.
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36036125
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще возник вопрос по загрузке..
IQ стоит на 64-битном линуксе. Создал я там большую таблицу - под сотню полей.
Выгрузил данные из АСЕ, пробую залить - вылетает ошибка практически сразу

I. 06/10 16:17:01. 0000000004 [20918]: Portions of the insert/load will be single threaded.
I. 06/10 16:17:02. 0000000004 Exception Thrown from s_blockmap.cxx:2786, Err# 0, tid 243 origtid 243
I. 06/10 16:17:02. 0000000004 O/S Err#: 0, ErrID: 2055 (s_bufman_exception); SQLCode: -1009031, SQLState: 'QSA31', Severity: 14
I. 06/10 16:17:02. 0000000004 [20052]: main Bufman: All buffer cache pages are in use, ask your DBA to increase the size of the buffer cache; buffer={unknown buffer} page={unknown page}.
-- (s_blockmap.cxx 2786)

Файлик на 580 тысяч строк, размер 366 метров.

При этом ключи на поднятие памяти прописывал
-iqmc 1600М
-iqtc 2400М

Вот ключи запуска сервера

I. 06/10 11:02:31. 0000000000 IQ cmd line srv opts: -iqmc 1600M -iqtc 2400M
I. 06/10 11:02:31. 0000000000 IQ full cmd line: -c 48m -gc 20 -gd all -gl all -gm 10 -gp 4096 -ti 4400 -iqmc 1600M -iqtc 2400M -n IQWOOD -x tcpip{port=2638} /data/iqdb/iq.db -hs -gn 25 -o /opt/sybaseIQ/ASIQ-12_7/logfiles/IQWOOD.014.srvlog -hn 8

Ткните плиз - где я что не так делаю :)
Гружу лоадом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
set temporary option ESCAPE_CHARACTER='ON';
set temporary option conversion_error='Off';
set temporary option date_format='yyyy.mm.dd';
truncate table dba.tmp_payment;
load table dba.tmp_payment(    
pb_pkey '][',
pb_date_pay '][',
.....................
cc_kod '][\x0a'
)
from '/data/load/payment_cp1251.txt'
quotes off
escapes off
message log '/data/iqdb/message.msg'
row log '/data/iqdb/message.row'
ONLY LOG all
LOG DELIMITED BY '#'
preview on
;
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36038209
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фигня какаято..
Сделал выгрузку этой простыни всего из 10 строк.
Результат тотже!!
Размер файла 6045 байт..
Уже память и опциями в субд выделял..

Код: plaintext
1.
2.
set option public.Main_Cache_Memory_MB= 1600 ;
set option public.Temp_Cache_Memory_MB= 2400 ;

Подскажите - куда копать.
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36039038
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала я бы рекомендовал накатить последний патчик ESD6

Если и с ним то же самое, то следует проверить базу с помощью sp_iqcheckdb (Такое сообщение может быть из-за например поврежденных индексов)

Если чисто, то надо удостоверится, сколько все-таки памяти для кешей IQ используется в настоящий момент, (может другие запросы - используют почти весь temp cache)
Выполните - sp_iqstatus
см.
Main IQ Blocks Used
Temporary IQ Blocks Used

Как самая крайняя мера, можно попробовать грузить не сразу всю широкую таблицу (100 полей), а частично например 4 раза по 25 полей - используя START ROW ID
детальней см. Partial-width load


Или же можете попробовать использовать insert location. Тогда IQ сам подключиться к ASE и выгребет нужные данные.. Файл с выгруженными данными - использовать не будет.
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36039150
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
moris , спасибо за совет!
Опять получилось из серии - барабашка. База, в которой я создавал - была создана админами. Почти все по дефолту как я понял, кроме размера.
Никакие мои ухищрения не заставили данные в нее загрузиться - создавал и таблицку из пары десятков полей.

Буквально с час назад мелькнула мысль - попытаться создать новую базу. Сделал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create database '/data/iqdb/michael.db'
transaction log on
java on
jconnect on
page size  4096 
collation '1251cyr'
case ignore
password case ignore
iq path '/data/iqdb/michael.dat'
iq size  2000 
iq page size  131072 
temporary path '/data/iqdb/michael.iqtmp'
temporary size  2000 ;
так, для теста - данные успешно загрузились! 330 метровый файл влетел за 31 секунду. На том же сервере, с теми же настройками сервера.

Из явного отличия от той бд - там по дефолту вышло регистрозависимо.
Что еще из отличий - сейчас буду смотреть.. Но ооочень неочевидно из сообщения....
Два дня убил на игры с памятью, а оказалось что БД криво сделана.....
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36039162
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати.
Вот из iq_status

Name,Value
' Main IQ Buffers:','127, 16Mb'
' Temporary IQ Buffers:','95, 12Mb'
' Main IQ Blocks Used:','114088 of 256000, 44%=891Mb, Max Block#: 114998'
' Temporary IQ Blocks Used:','81 of 256000, 0%=0Mb, Max Block#: 177'
' Main Reserved Blocks Available:','25600 of 25600, 100%=200Mb'
' Temporary Reserved Blocks Available:','25600 of 25600, 100%=200Mb'
' IQ Dynamic Memory:','Current: 4111mb, Max: 5200mb'

Вот из лога старта сервера
I. 06/12 14:46:18. 0000000000 IQ cmd line srv opts: -iqmc 1600M -iqtc 2400M
I. 06/12 14:46:18. 0000000000 IQ full cmd line: -c 4G -gc 20 -gd all -gl all -gm 100 -gp 32768 -ti 4400 -iqmc 1600M -iqtc 2400M -n IQWOOD -x tcpip{port=2638} /data/iqdb/iq.db -hs -gn 105 -o /opt/sybaseIQ/ASIQ-12_7/logfiles/IQWOOD.016.srvlog -hn 8
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36039231
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался...
Вдруг пригодится кому.
выставление опций при загрузке сервера -iqmc -iqtc не помогала никак.
А вот выставление
Код: plaintext
1.
set option Public.Main_Cache_Memory_MB='1600';
set option Public.Temp_Cache_Memory_MB='2400';
и перезагрузка сервера - помогла. Данные нормально грузятся.

При этом в доке написано черным по белому

This option sets the size of the main shared memory buffer cache for the
database. Sybase recommends that you do not use this option; instead, set the
main buffer cache size with the -iqmc server option.
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36041130
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вам же IQ Status и показывал, что используются дефолтные настройки IQ по кешам

Вот из вашего iq_status

Name,Value
' Main IQ Buffers:','127, 16Mb'
' Temporary IQ Buffers:','95, 12Mb'

---------------------------------

Ваши свичи из командной строки -iqmc 1600M -iqtc 2400M - вообще НЕ ИСПОЛЬЗОВАЛИСЬ, т.к. были ошибочно определены.. Надо было указать размер в мегабайтах, и не указывать еще 'M' т.е. правильно так -iqmc 1600 -iqtc 2400

- iqmc size -- Specify the main cache size in MB . (Overrides default.)

Т.к. серверные свичи ошибочны, использовались опции БД, которые и были по дефолту ;-)

В последней конфигурации вы тоже порадовали.. Зачем для каталого отдавать 4 GB ???
У вас свич -c 4G.. ???????
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36041362
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:)
Ну - всяко бывает. Думал что 1600М правильно.
сейчас переделаю строку запуска.
А сколько каталогу отдавать?
дефолтные 48М?
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36041382
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
48M - для начального размера каталога, вполне подойдет....
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36041398
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо!
буду дальше разбираться
странно что ничего не сообщалось если неправильно заданы опции...

а что лучше для связки АСЕ-IQ использовать?
для загрузки данных.
bcp out + load
или insert location
?
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36041407
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однозначно - insert location
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36041429
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в чем преимущества? По документации не ясно. Не особо встречался чтобы это использовали. Расскажите пожалуйста.
И можно ли в insert location указывать чтото типа forceplan?
При выгрузке бсп-ёй наткнулся на то, что она может выгрузить таблицу или вьюшку. Если выгружать изменения за день - нормально написать вью. Но в нем не сказать никак форсплан - и план строится совершенно не такой как необходимо. И произвидительность ее также... Вот если б можно было перенести както результат выполнения процедуры....
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36041561
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
insert location лучше для выгрузки из ASE в IQ т.к.

- нет промежуточной выгрузки во внешний файл
- при передаче по сети большого выгруженного файла, его еще надо дополнительно заархивровать на хосте ASE и на стороне IQ разархивировать
- нет проблем с форматами дат..

set forceplan использовать нельзя, однако можно использовать нужный абстрактный план, что позволяет явно оптимизатру указать нужный план

insert into SOME_TAB
LOCATION '<ASE_SERVER>.<DB>'
select ......
PLAN "(.......)"


Результат выполнение SP, можно засунуть во временную таблицу (не сесиоонку), и затем inset location залить в IQ
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36041905
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
Пробую insert location - возник вопрос. А переконвертировать данные можно?
В слыче с бсп и загрузкой - запросто. При выгрузке указываеш кодировку нужную.
А здесь?
АСЕ - utf8, IQ - cp1251.
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36042092
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
utf8, и cp1251 - совместимые кодировки, поэтому перекодировка будет налету..
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36042714
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не происходит :(
в IQ получаю абракадабру...
Нагрузочное
примерно такого вида.......
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36043272
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ерунда.. Все всегда работает при правильной настройке..

У вас не настроена правильно локализация для cp1251
Что на IQ сервере, что на базе должна быть русская кодировка cp1251

Проверьте
SELECT PROPERTY( 'CharSet' )
SELECT DB_PROPERTY ( 'CharSet' )


Также в locales.dat должна быть использована кодировка cp1251
Детальней тут
...
Рейтинг: 0 / 0
Загрузка в IQ
    #36043570
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, ковыряемся.
Действительно - в базе ср1251, на сервере утф8..
Надо както сменить на сервере.
И в локалес.дат прописать
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Загрузка в IQ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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