|
perl&mssql & большой обьем данных
|
|||
---|---|---|---|
#18+
Такая вот проблемка сервер MSSQL есть перловый скрипт $SQL_query ="insert into table (field1,field2,fiel3,field4) values (\'%02u-%02u-% 2u %02X:%02X:%02X\',%4u,\'%08X\',\'%08X%08X%02X\');\n"; ..... while (read(DATA,$buf,32)){ %k=unpack_($buf); if ($rcnt>1 ){ $dbh->dbcmd($query); $stat=$dbh->dbsqlsend; $dbh->dbresults; $query=""; $rcnt=1;} $rcnt++; $query.=sprintf ($SQL_query, 06,05,03,$k{hh},$k{mm},'00', $k{cdr}, $k{CRnum1}, $k{DLnum1},$k{DLnum2},$k{DLnum3});} Построчно загонять данные очень уж долго 800 000 записей почти Пробовал загонять в буфер несколько insertов сразу ругается КАк это сделать правельнее ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2003, 17:08 |
|
perl&mssql & большой обьем данных
|
|||
---|---|---|---|
#18+
Если для Вашего драйвера работают bulk функции (bcp_sendrow etc.) то лучше пользоваться ими, а не делать insert'ы. Для MSSQL::DBlib (с виндов) должно работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2003, 18:04 |
|
perl&mssql & большой обьем данных
|
|||
---|---|---|---|
#18+
А можно поподообнее А то я в sql северах неочень верней только начинаю разбиратся ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2003, 07:21 |
|
perl&mssql & большой обьем данных
|
|||
---|---|---|---|
#18+
1 Файл то бинарный bulk insert c бинарниками работает ? 2 Кто-нибудь юзал dbsqlsend ?(на сколько я понял в отличии от dbsqlexec в том что он не ждет результата) 3 Почему если в в запросе больше одного инзерта вываливается ошибка ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2003, 07:54 |
|
perl&mssql & большой обьем данных
|
|||
---|---|---|---|
#18+
1. BULK INSERT с бинарниками не работает, но я и не предлагаю его использовать. bcp функции загружают уже распакованные и сложенные в массив данные. Подробнее читайте здесь и здесь 2. Результата dbsqlsend действительно не ждет и позволяет клиенту делать что-то еще пока сервер выполняет запрос. Для извлечения результатов этого запроса и контроля ошибок используются функции dbsqlsend и dbsqlok. Но на мой взгляд использование dbsqlsend в вашем случае не оправдано. 3. Потому что множественные инсерты порождают множественные результирующие наборы. Их все нужно извлекать и обрабатывать. Посмотрите примеры по вышеприведенным ссылкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2003, 17:50 |
|
perl&mssql & большой обьем данных
|
|||
---|---|---|---|
#18+
Спасибо Буду разбиратся ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2003, 07:51 |
|
perl&mssql & большой обьем данных
|
|||
---|---|---|---|
#18+
The front-end tool you are using does not support the feature of bulk insert from host. О bcp можно забыть ? или всетаки что-то можно зделать (доустановить что-нибудь) ? Даст что-нибудь в плане быстродействия использование транзакций ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2003, 06:18 |
|
perl&mssql & большой обьем данных
|
|||
---|---|---|---|
#18+
Я так и не понял. Вы какой собственно библиотекой пользуетесь? И с какой платформы? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2003, 06:57 |
|
perl&mssql & большой обьем данных
|
|||
---|---|---|---|
#18+
w2k3 server - activeperl w2k server - MSSQL желательно чтоб под freeBSD4.7 тож работало (но не сейчас оттуда я вообще до сервера достучатся немогу) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2003, 08:42 |
|
perl&mssql & большой обьем данных
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5.
Только при реальной загрузке bcp_batch лучше делать не после каждой строки, а хотя-бы после каждой тысячной (или десятитысячной, в зависимости от размера журнала транзакций в базе). Так будет гораздо быстрее. С фрибсд можно попробовать работать через Sybase::DBlib собранный с FreeTDS . У меня с солярки и линуха работает. Баги конечно есть, но где их нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2003, 20:44 |
|
perl&mssql & большой обьем данных
|
|||
---|---|---|---|
#18+
Всегда так если сразу не пошло так скорей всего уже не пойдет (только с одним разберешся тутже еще что-то) Bulk copying into a table with bigint columns is not supported for versions earlier than SQL Server 2000 но у меня 2000 sqlserver темболее я это поле id:bigint вообще не трогаю оно автоматом формируется ID++ больше там bigint полей нет Вопрос чем бсп отличается от sql запроса а так понимаю что преобразование данных происходит на клиенте (строка-дата итд) и серверу отсылается уже в готовом виде Я прав? или есть еще какие-нибудь отличия ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2003, 06:51 |
|
perl&mssql & большой обьем данных
|
|||
---|---|---|---|
#18+
С bigint-ом это какая-то засада. Я этот тип данных с перлом раньше не использовал, поэтому навскидку ничего сказать не могу. Буду смотреть. Основные различия bcp и insert в том, что: балк операции могут быть минимально логируемыми. при балк операции серверу не нужно парсить и исполнять отдельный стэйтмент для каждой вставляемой строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2003, 21:45 |
|
|
start [/forum/topic.php?fid=23&msg=32181733&tid=1480571]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
194ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 242ms |
total: | 535ms |
0 / 0 |