Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PipeLine data source / 20 сообщений из 20, страница 1 из 1
12.06.2008, 12:41
    #35371080
leokolus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Всем привет,

Задача - перегнать данные из одной базы данных в другую, первая база в ASA вторая в Оракле.
Понятно что таблиц немеряно, начал перегонять с помощью PipeLine, но это очень долго, появилась мысль но как реализовать не могу сообразить.
Мысль такая - создать небольшую програмку которая бы создавала PipeLine data source для каждой таблицы из списка таблиц.

Вот например такой источник

PIPELINE(source_connect=dabASA,destination_connect=DBOracle,type=update,commit=100,errors=100,keyname="applicationgroup")
SOURCE(name="applicationgroup",COLUMN(type=decimal,name="applicationgroupid",dbtype="numeric(15,0)",key=yes,nulls_allowed=no)
COLUMN(type=varchar,name="description",dbtype="varchar(50)",nulls_allowed=no)
COLUMN(type=decimal,name="deletestatus",dbtype="numeric(15,0)",nulls_allowed=no)
COLUMN(type=decimal,name="useridlastupdated",dbtype="numeric(15,0)",nulls_allowed=yes)
COLUMN(type=decimal,name="updatesite",dbtype="numeric(15,0)",nulls_allowed=yes)
COLUMN(type=decimal,name="exportmarker",dbtype="numeric(1,0)",nulls_allowed=no)
COLUMN(type=datetime,name="lastupdated",dbtype="timestamp",nulls_allowed=no)
COLUMN(type=datetime,name="bloblastupdated",dbtype="timestamp",nulls_allowed=yes))
RETRIEVE(statement="PBSELECT(TABLE(NAME=~"applicationgroup~") COLUMN(NAME=~"applicationgroup.applicationgroupid~")COLUMN(NAME=~"applicationgroup.description~")COLUMN(NAME=~"applicationgroup.deletestatus~")COLUMN(NAME=~"applicationgroup.useridlastupdated~")COLUMN(NAME=~"applicationgroup.updatesite~")COLUMN(NAME=~"applicationgroup.exportmarker~")COLUMN(NAME=~"applicationgroup.lastupdated~")COLUMN(NAME=~"applicationgroup.bloblastupdated~"))")
DESTINATION(name="applicationgroup",COLUMN(type=decimal,name="applicationgroupid",dbtype="NUMBER(15,0)",key=yes,nulls_allowed=no,initial_value="0")
COLUMN(type=varchar,name="description",dbtype="VARCHAR2(50)",nulls_allowed=no,initial_value="spaces")
COLUMN(type=decimal,name="deletestatus",dbtype="NUMBER(15,0)",nulls_allowed=no,initial_value="0",default_value="0 ")
COLUMN(type=decimal,name="useridlastupdated",dbtype="NUMBER(15,0)",nulls_allowed=yes)
COLUMN(type=decimal,name="updatesite",dbtype="NUMBER(15,0)",nulls_allowed=yes)
COLUMN(type=decimal,name="exportmarker",dbtype="NUMBER(1,0)",nulls_allowed=no,initial_value="0",default_value="1 ")
COLUMN(type=datetime,name="lastupdated",dbtype="DATE",nulls_allowed=no,initial_value="today",default_value="SYSDATE ")
COLUMN(type=datetime,name="bloblastupdated",dbtype="DATE",nulls_allowed=yes))

как и где взять данные о таблице? потом уж теутовый файл наборать будет не проблема, да и поменять расхождения в типах таблиц тоже думаю проблем нет.

Плиз делитесь мнениями, буду очень вам обязан
...
Рейтинг: 0 / 0
12.06.2008, 13:06
    #35371146
PipeLine data source
можно из АСА сделать unload data в SQL
и просто запустить SQL на оракле
...
Рейтинг: 0 / 0
12.06.2008, 14:53
    #35371321
leokolus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Так не получится так как скрипт ASA и Oracle не совпадают
...
Рейтинг: 0 / 0
12.06.2008, 15:19
    #35371364
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Ну все перегнать "в лоб" не просто. Хотя бы из-за Foreign Key и т.д. Я думаю быстрее всего создать нужные структуры таблиц в Oracle (ручками или конвертер какой есть, может он все позволяет делать ?), затем выкинуть данные в текстовый файл, залить из текстового файла, а затем создать индексы, внешние ключи и т.д.
...
Рейтинг: 0 / 0
12.06.2008, 15:20
    #35371366
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Да, к чему это всё я - PowerBuilder для этого не лучший инструмент.
...
Рейтинг: 0 / 0
12.06.2008, 16:30
    #35371461
leokolus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Локшин Марк - база в оракле уже создана, надо только данные туда залить
...
Рейтинг: 0 / 0
12.06.2008, 17:14
    #35371524
+/-
+/-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
ASA :
select * from SYSTABLE
select * from SYSCOLUMN
...
Рейтинг: 0 / 0
13.06.2008, 07:46
    #35371904
leokolus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
+/- - спасибо за подсказку, но нужна ещё одна подсказка, кто знает плиз хелп

откуда можно взять "initial_value" колонки, не "default_value" (которое можно взять из таблиц syscolumn или syscolunms) а именно исходное значение ("initial_value")
...
Рейтинг: 0 / 0
13.06.2008, 10:06
    #35371981
+/-
+/-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
по-моему, если схема уже создана то оставьте Initial Value и Default Value пустыми, для того что бы данные перенеслись один в один в оракл
...
Рейтинг: 0 / 0
13.06.2008, 16:29
    #35372481
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
leokolus Локшин Марк - база в оракле уже создана, надо только данные туда залить
Если данных мало - можете играться с pipeline'ами. Если много - лучше выбрать другие средства экспорта/импорта данных.
...
Рейтинг: 0 / 0
13.06.2008, 21:24
    #35372722
leokolus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
нвстроил я создание исходника пайплайн и сохранение его в файле - один в один как экспорт из PB, за один проход все таблицы вываливаю в исходники пайплайнов с сохранением их в файле.
Раньше думал создам пайплайны и импортирую их в апликуху и всё затем подставляй пайплайны и перегоняй базу согласно составленной последовательности таблиц. Но как говорится появилась мысль усовершенствовать утиль, таким образом чтобы за один цикл происходило следующее:
1. создание исходника пайплайна
2. сохранение его во временном файле
3. импорт пайплайна
4. исполнение пайплайна

пункты 1,2,4 я уже написал, а вот пункт 4 не соображу как сделать, плиз у кого какие мысли есть делитесь.
...
Рейтинг: 0 / 0
13.06.2008, 22:06
    #35372741
+/-
+/-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Pipeline object
........
DataObject String The name of the pipeline object (the object created in the Data Pipeline painter)
.....
...
Рейтинг: 0 / 0
13.06.2008, 22:22
    #35372747
+/-
+/-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
похоже вы не правильно вопрос написали, и пункт 3 не можете сделать ....
сохранять в файлы и делать импорт не обязательно (импорт можно сделать только для dw, насколько мне известно). может это натолкнет на мысль :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
pipeline lp_1, lp_2 
string ls_syntax

lp_1  = create pipeline
lp_2  = create pipeline

lp_1.dataobject = 'pip_test'

ls_syntax = lp_1.syntax 

lp_2.syntax = ls_syntax
messageBox('', lp_2.syntax)
...
Рейтинг: 0 / 0
15.06.2008, 05:49
    #35373346
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Насколько мне помнится, в Oracle можно настроить transparent gateway и тогда задача значительно упрощается
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
15.06.2008, 10:37
    #35373375
leokolus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Всем большое спасибо - всё получилось и с пунктом 3 тоже

+/- только наоборот: lp_1.syntax = ls_syntax

spas2001 - спасибо надо будет посмотреть
...
Рейтинг: 0 / 0
25.06.2008, 14:40
    #35393712
griniland
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Это.. ещё в оракле есть мощнейшая вещь - SQLLOADER - загрузка двоичных данных из файла в самых невообразимых вариациях. Если в ASA есть нечто вроде BCP (как в ASE) - выгружаем данные тупо в файлы (bcp), потом заливаем их SQLLOADER'ом на сервер Oracle (PS: сам так перетаскивал адовы объёмы по 100-400 млн.строк из ASE в Oracle). По скорости - ни что не сравнится, pipe-line даже рядом не лежал.
...
Рейтинг: 0 / 0
25.06.2008, 14:43
    #35393720
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Есть конечно sqlloader, но он требует определенных знаний, хотя в учебниках все есть
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
25.06.2008, 15:31
    #35393906
griniland
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Ну, SQL-Loader - мало того, что великолепно документирован, ведёт подробнейшие логи жизнедеятельности - так ещё и не труден, если не лезть в дебри, которые для обычной переливки данных вряд ли могут понадобиться :)

Крайне удивило, что в Oracle не существует аналогичной утилиты для выгрузки данных).
...
Рейтинг: 0 / 0
25.06.2008, 19:19
    #35394706
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Там это нечасто требуется bulk операции есть внутри)
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
25.06.2008, 19:22
    #35394712
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PipeLine data source
Вообще-то для этих дел есть Oracle Developer, который без проблем береться с сайта Oracle
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PipeLine data source / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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