Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Альтернативная загрузка данных


-=Vlad=- ©   (2003-07-18 19:11:00) 

Мастера кто нибудь может подсказать альтернативный способ загрузки данных в БД. Я краем глаза слышал в нете про спец файлы с маркерами... или чтото подобное. Помогите раскрыть тему.


Sable   (2003-07-29 01:28:00) [1]

Может не совсем в тему, но мне интересно, какими способами можно организовать заливку большого количества данных под IB server програмно? Через внешние таблицы - долго, select - insert не лучше. А как пакетами?


stone   (2003-07-23 12:34:00) [2]


> для сетевых MSSQL


BULK, BULK INSERT


-=Vlad=-   (2003-07-23 12:23:00) [3]

Romkin © (21.07.03 18:19)
А представте что Вам необходимо загрузить надо не 5 записей а 50000, и каждый день, что тогда? Это не то слово как объемно, и ОЧЕНЬ долго.
Для этого случая есть так называемые пакетные загрузки данных, когда за одно обращение в БД в нее вливается более одной записи. Именно об этом я хотел поговорить и в результате найти какой то один обобщенный способ работающий на большинстве СУБД, но как видно это невозможно т.к. насколько я понял на по этому вопросу нет стандарта и каждый разработчик если и решает эту проблему то по своему.


Romkin   (2003-07-21 18:19:00) [4]

Хм... Для IB мне достаточно примерно такого:

SET SQL DIALECT 3;

SET NAMES WIN1251;

CONNECT "localhost:D:\chaos5\Test.gdb" USER "SYSDBA" PASSWORD "masterkey";

INSERT INTO MARKNAME (MARK_ID, MARK_NAME) VALUES (10005, "неудовлетворительно");
INSERT INTO MARKNAME (MARK_ID, MARK_NAME) VALUES (10006, "удовлетворительно");
INSERT INTO MARKNAME (MARK_ID, MARK_NAME) VALUES (10007, "хорошо");
INSERT INTO MARKNAME (MARK_ID, MARK_NAME) VALUES (10008, "отлично");
INSERT INTO MARKNAME (MARK_ID, MARK_NAME) VALUES (10012, "плохо");

COMMIT WORK;

Довольно объемно, правда, зато всегда можно руками поправить


Serginio   (2003-07-21 18:17:00) [5]

Прежде чем говорить об альтернативных загрузках данных, надо привязываться к конкретной СУБД. Напрмер Загрузка из текстовых файлов и XML достаточно широко распространена. Возможны и другие варианты.


Romkin   (2003-07-21 18:14:00) [6]

Ну как? обычно пишется скрипт, в котором идут друг за другом команды insert into, и при загрузке скрипта они все выполняются.


-=Vlad=-   (2003-07-21 18:09:00) [7]

Если речь идет об отнострочной команде INSERT INTO ..., то это слишком долго, и не по теме. А вот если о пакетной заглузке, то можно ли поподробней.



Sergey13   (2003-07-21 18:01:00) [8]

2Romkin © (21.07.03 17:30)
>Скрипт с выражениями insert into ... ; должен пойти на большинстве БД
Наверное. Но что в этом "альтернативного"? Это как раз самый что ни на есть стандартный. Автор видимо имел в виду нечто вроде Ораклового SQL*Loader а. А такие утилиты, ИМХО, оригинальны для каждой СУБД, ибо используют низкоуровневый доступ к базе.


Romkin   (2003-07-21 17:30:00) [9]

Скрипт с выражениями insert into ... ; должен пойти на большинстве БД, вопрос в некоторых дополнительных деталях, таких как соединение с БД/создание БД. Но это можно хранить отдельно в заголовочных файлах


-=Vlad=-   (2003-07-21 17:14:00) [10]

Для локальных я использую ADO+Access, для сетевых MSSQL. Но вопрос не в том,а в том чтобы способ работал на большинстве СУБД.
Возможно ли такое, или для каждой прийдется изобретать свой собственный?


roottim   (2003-07-21 17:05:00) [11]

в общем смысле это SQL INSERT INTO...
а остальное это смысл раздельный... как уж кто заботиться о своих клиентах...
вот оракл напр имеет ср-во закаки б-х объемов через direct доступ...
да нем построена утилита SQL*Loader, можно эту опцию юзать через OCI.DLL либа напрямую, либо прямыми компонентами доступа..


Sandman25   (2003-07-21 16:51:00) [12]

-=Vlad=- © (21.07.03 16:39)

Под Informix загрузка осуществляется одной командой
LOAD FROM "filename" INSERT INTO table

Так что лучше все-таки указать СУБД IMHO :)


-=Vlad=-   (2003-07-21 16:39:00) [13]

CУБД - без конкретизации, если вы знаете способ под конкретную БД, то опишите, постараемся обобщить. Повторюсь речь идет не о конкретной задаче, а способе. Так что любая инфа по данной теме будет полезна.


Zacho   (2003-07-21 14:25:00) [14]

А какая СУБД и компоненты доступа ?


-=Vlad=-   (2003-07-21 14:18:00) [15]

А каким способом загружать в БД?


Sandman25   (2003-07-21 10:40:00) [16]

В каждой строчке файла находится одна запись.
Поля разделяются спец. символом, которого не может быть в данных.
Например,
1|Name1|Descr1|
2|Name2|Descr2|
и т.д.


-=Vlad=-   (2003-07-21 10:37:00) [17]

Формат роли не играет, его можно предварительно сделать нам подходящим. В данном случае я не решаю конкретную задачу, а просто пытаюсь разобраться в теме, хотя вопрос очень важен с его использованием можно решить проблемы загрузки больших объемов информации в БД. Думаю это интересно многим.


KDS   (2003-07-18 19:40:00) [18]

А в каком формате изначально данные?


Наверх

Титульная страница Поиск, карта сайта Написать письмо