Текущий архив: 2003.08.21;
Скачать: CL | DM;
Вниз
Альтернативная загрузка данных Найти похожие ветки
← →
-=Vlad=- © (2003-07-18 19:11) [0]Мастера кто нибудь может подсказать альтернативный способ загрузки данных в БД. Я краем глаза слышал в нете про спец файлы с маркерами... или чтото подобное. Помогите раскрыть тему.
← →
KDS © (2003-07-18 19:40) [1]А в каком формате изначально данные?
← →
-=Vlad=- © (2003-07-21 10:37) [2]Формат роли не играет, его можно предварительно сделать нам подходящим. В данном случае я не решаю конкретную задачу, а просто пытаюсь разобраться в теме, хотя вопрос очень важен с его использованием можно решить проблемы загрузки больших объемов информации в БД. Думаю это интересно многим.
← →
Sandman25 © (2003-07-21 10:40) [3]В каждой строчке файла находится одна запись.
Поля разделяются спец. символом, которого не может быть в данных.
Например,
1|Name1|Descr1|
2|Name2|Descr2|
и т.д.
← →
-=Vlad=- © (2003-07-21 14:18) [4]А каким способом загружать в БД?
← →
Zacho © (2003-07-21 14:25) [5]А какая СУБД и компоненты доступа ?
← →
-=Vlad=- © (2003-07-21 16:39) [6]CУБД - без конкретизации, если вы знаете способ под конкретную БД, то опишите, постараемся обобщить. Повторюсь речь идет не о конкретной задаче, а способе. Так что любая инфа по данной теме будет полезна.
← →
Sandman25 © (2003-07-21 16:51) [7]-=Vlad=- © (21.07.03 16:39)
Под Informix загрузка осуществляется одной командой
LOAD FROM "filename" INSERT INTO table
Так что лучше все-таки указать СУБД IMHO :)
← →
roottim (2003-07-21 17:05) [8]в общем смысле это SQL INSERT INTO...
а остальное это смысл раздельный... как уж кто заботиться о своих клиентах...
вот оракл напр имеет ср-во закаки б-х объемов через direct доступ...
да нем построена утилита SQL*Loader, можно эту опцию юзать через OCI.DLL либа напрямую, либо прямыми компонентами доступа..
← →
-=Vlad=- © (2003-07-21 17:14) [9]Для локальных я использую ADO+Access, для сетевых MSSQL. Но вопрос не в том,а в том чтобы способ работал на большинстве СУБД.
Возможно ли такое, или для каждой прийдется изобретать свой собственный?
← →
Romkin © (2003-07-21 17:30) [10]Скрипт с выражениями insert into ... ; должен пойти на большинстве БД, вопрос в некоторых дополнительных деталях, таких как соединение с БД/создание БД. Но это можно хранить отдельно в заголовочных файлах
← →
Sergey13 © (2003-07-21 18:01) [11]2Romkin © (21.07.03 17:30)
>Скрипт с выражениями insert into ... ; должен пойти на большинстве БД
Наверное. Но что в этом "альтернативного"? Это как раз самый что ни на есть стандартный. Автор видимо имел в виду нечто вроде Ораклового SQL*Loader а. А такие утилиты, ИМХО, оригинальны для каждой СУБД, ибо используют низкоуровневый доступ к базе.
← →
-=Vlad=- © (2003-07-21 18:09) [12]Если речь идет об отнострочной команде INSERT INTO ..., то это слишком долго, и не по теме. А вот если о пакетной заглузке, то можно ли поподробней.
← →
Romkin © (2003-07-21 18:14) [13]Ну как? обычно пишется скрипт, в котором идут друг за другом команды insert into, и при загрузке скрипта они все выполняются.
← →
Serginio (2003-07-21 18:17) [14]Прежде чем говорить об альтернативных загрузках данных, надо привязываться к конкретной СУБД. Напрмер Загрузка из текстовых файлов и XML достаточно широко распространена. Возможны и другие варианты.
← →
Romkin © (2003-07-21 18:19) [15]Хм... Для 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;
Довольно объемно, правда, зато всегда можно руками поправить
← →
-=Vlad=- © (2003-07-23 12:23) [16]Romkin © (21.07.03 18:19)
А представте что Вам необходимо загрузить надо не 5 записей а 50000, и каждый день, что тогда? Это не то слово как объемно, и ОЧЕНЬ долго.
Для этого случая есть так называемые пакетные загрузки данных, когда за одно обращение в БД в нее вливается более одной записи. Именно об этом я хотел поговорить и в результате найти какой то один обобщенный способ работающий на большинстве СУБД, но как видно это невозможно т.к. насколько я понял на по этому вопросу нет стандарта и каждый разработчик если и решает эту проблему то по своему.
← →
stone © (2003-07-23 12:34) [17]
> для сетевых MSSQL
BULK, BULK INSERT
← →
Sable (2003-07-29 01:28) [18]Может не совсем в тему, но мне интересно, какими способами можно организовать заливку большого количества данных под IB server програмно? Через внешние таблицы - долго, select - insert не лучше. А как пакетами?
Страницы: 1 вся ветка
Текущий архив: 2003.08.21;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.017 c