powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
19 сообщений из 19, страница 1 из 1
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37050990
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Имею 2 odbc источника:
1) фоксовская база
2) ase-шная база

В ПБ Имею два коннекта по этим двум источникам.

Необходимо взять из фокса таблицу Tab1 и все ее данные и создать точную копию этой таблицы в ASE.
Подскажите плиз как такое сделать?
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37051011
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. достаточно было бы выполнить такое
Код: plaintext
select * into db1.dbo.tab1 from db1.dbo.tab1 

но как это правильно сделать?
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37051098
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно через два Datawindow или Datastore с помощью RowsCopy(...) или PipeLine.
Первый вариант мне больше нравится (ИМХО) .
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37051116
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если честно, то даже не представляю как это сделать с помощью Datawindow или Datastore.
почитал про Datastore, но ничего не понял.
если можно пример с описанием
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37051118
maniac85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы через pipeline перегнал
File -> New -> Data Pipeline если чо)
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37051209
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pipeline не совсем подходит, выборка полей, а я хочу закрутить так чтоб брать s elect * from (очередная таблица из массива) из фокса и так же само вставлять в sybase
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37051211
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. полностью автоматом, без самостоятельного выбора таблиц и полей.
как в моем втором посте.
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37051230
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
идеально конечно было бы делать это все таким образом:
Код: plaintext
select * into (имя_коннекта.имя_базы.имя_таблицы) from (имя_коннекта.имя_таблицы)
или для наглядности так:
Код: plaintext
select * into (sql_syb.db1.tab1) from (sql_fox.tab1)

но так на сколько я знаю ничего не получится....
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37051235
maniac85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperousт.е. полностью автоматом, без самостоятельного выбора таблиц и полей.
как в моем втором посте.вам один раз это сделать или много?
если один раз, то выберите все поля)
если много, то смотрите на datawindow/datastore

к слову во втором посте никаким не автоматом выбрана таблица tab1
иле вы вовсе хотите целую кучу таблиц оттуда натягать?
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37051258
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maniac85Imperousт.е. полностью автоматом, без самостоятельного выбора таблиц и полей.
как в моем втором посте.вам один раз это сделать или много?
если один раз, то выберите все поля)
если много, то смотрите на datawindow/datastore

к слову во втором посте никаким не автоматом выбрана таблица tab1
иле вы вовсе хотите целую кучу таблиц оттуда натягать?
то был пример на одной, но надо куча таблиц
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37051262
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если не трудной, дайте пример как это сделать.
как загнать в датавиндоу я знаю, но вот как оттуда в нужную БД... фиг знает...
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37052732
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я бы делал так ...
Это для одной пары таблиц. Для других таблиц этот подвиг надо повторить для каждой в отдельности.

t_ase - таблица ASE
t_fox - таблица Fox-a
c_ase - connection object для ASE
c_fox - con. j,ject для FOX-a

для t_ase создаем dw_ase
для t_fox создаем dw_fox

И далее ...

datastore ds_fox, ds_ase

ds_fox = create ds_fox
ds_fox.dataobject = 'dw_fox'
ds_fox.settransobject(c_fox)

ds_ase = create ds_ase
ds_ase.dataobject = 'dw_ase'
ds_ase.settransobject(c_ase)

ds_fox.retrieve() // получаем данные из ФОКСа
ds_fox.rowscopy( 1, ds_fox.rowcount(), primary!, ds_ase, 1, primary!) // копируем их в ASE
ds_ase.update() // записываем в таблицу ASE

!!! Обязательное условие этого метода !!!
Порядок следования полей и их типы в обеих DW должны быть одинаковые, иначе rowscopy(...) не сработает.
Если это не так (что есть наверняка :)), то необходимо вместо rowscopy(...) использовать цикл по ds_fox и вставлять строки в ds_ase с последующим заполнением их вручную. Тут-же можно делать некоторые преобразования, если в них есть необходимость.

Приведенный пример очень схематичный и только показывает сам принцип, а обработка ошибок и прочее за Вами.
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37053860
maniac85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJBНу я бы делал так ...
Это для одной пары таблиц. Для других таблиц этот подвиг надо повторить для каждой в отдельности.

t_ase - таблица ASE
t_fox - таблица Fox-a
c_ase - connection object для ASE
c_fox - con. j,ject для FOX-a

для t_ase создаем dw_ase
для t_fox создаем dw_fox

И далее ...

datastore ds_fox, ds_ase

ds_fox = create ds_fox
ds_fox.dataobject = 'dw_fox'
ds_fox.settransobject(c_fox)

ds_ase = create ds_ase
ds_ase.dataobject = 'dw_ase'
ds_ase.settransobject(c_ase)

ds_fox.retrieve() // получаем данные из ФОКСа
ds_fox.rowscopy( 1, ds_fox.rowcount(), primary!, ds_ase, 1, primary!) // копируем их в ASE
ds_ase.update() // записываем в таблицу ASE

!!! Обязательное условие этого метода !!!
Порядок следования полей и их типы в обеих DW должны быть одинаковые, иначе rowscopy(...) не сработает.
Если это не так (что есть наверняка :)), то необходимо вместо rowscopy(...) использовать цикл по ds_fox и вставлять строки в ds_ase с последующим заполнением их вручную. Тут-же можно делать некоторые преобразования, если в них есть необходимость.

Приведенный пример очень схематичный и только показывает сам принцип, а обработка ошибок и прочее за Вами.тока t_ase надо еще создать заранее, а топикстартер хочет чтоб оно само, насколько я понял
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37054718
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Монтирует базу в ase через ODBC и вперед:)
А так 2 описанных варианта - pipeline и dw, ну и вариации на тему
Допустим dw напрямую парсящее dbf или какой-нибудь импорт данных или создание таблицы на лету через синтаксис и динамически созданная dw......
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37055320
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spas2001 Монтирует базу в ase через ODBC и вперед:)
А так 2 описанных варианта - pipeline и dw, ну и вариации на тему
Допустим dw напрямую парсящее dbf или какой-нибудь импорт данных или создание таблицы на лету через синтаксис и динамически созданная dw......
вот это надо попробовать!
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37055324
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но как???
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37055593
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spas2001Монтирует базу в ase через ODBC и вперед:)
А так 2 описанных варианта - pipeline и dw, ну и вариации на тему
Допустим dw напрямую парсящее dbf или какой-нибудь импорт данных или создание таблицы на лету через синтаксис и динамически созданная dw......
1. Вариант "pipeline" помоему ни практически, ни теоритически не проходит.
2. Вариант с DW - это единственное правильное решение.
3. А по поводу 100% совпадения таблиц, то если они не совпадают в принципе, то даже "ручками" ничего не получется. Но если столбцы совпадают по типу и количеству, но по очередности - нет, то скриптом это решаемо.
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37057579
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIS,
1. Запрос вида
Код: plaintext
select * into db1.dbo.tab1 from db1.dbo.tab1 
в ASE создает новую таблицу
2.Вариант с pipeline работает если предварительно создать необходимую таблицу или включить опцию "Create-Add table". Когда-то реализовывал что-то подобное.
3. Насчет совпадения таблиц вопрос не стоял, из запроса следует, что таблица должна создаться соответствующая
4. Насчет монтирования базы - проще обратиться на форум ASE
...
Рейтинг: 0 / 0
Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
    #37057610
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще можно применить следующий алгоритм
Код: plaintext
1.
2.
3.
4.
5.
 1 . <transaction object>.SyntaxFromSQL('select *  from (sql_fox.tab1)')
 2 . Считываем в цикле параметры колонок, модифицируем при необходимости
 3 . Создаем таблицу используя Execute Immediate
 4 . Далее либо pipeline, либо dw также созданное динамически

В общем-то остальное уже понятно благодаря остальным участникам

ЗЫ: Это только вариант навскидку, просьба не принимать его как истину в последней инстанции
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Таблица из FoxPro 6 в ASE 12.5. PB 9.0.3
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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