Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
3-68238
Buka
2003-07-21 18:26
2003.08.21
Как установить BDE вместе с поставляемой на другую машину програм


14-68502
VEG
2003-08-05 19:03
2003.08.21
Как заставить в LPT на штырек подавать 1/0


3-68248
freemax
2003-07-25 14:49
2003.08.21
Как мне узнать в ДБГрид шырину определенной колонки??


14-68461
Александр_ИСТ
2003-08-04 13:55
2003.08.21
Пишу программу рисования графика по точкам, и никак не получается


1-68399
Alexno
2003-08-07 12:42
2003.08.21
Выгрузка в Excel