powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / перенос таблиц
2 сообщений из 2, страница 1 из 1
перенос таблиц
    #36605288
MARGARITA23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица Продажи в БД FoxPro
код_товара/код_покупателя
1/111
1/112
1/223
2/222
2/114
3/444
Также есть таблица prodaji в БД Oracle:
kod/kod_tov/kod_p

и таблица jurnal в БД Oracle:
kod/oper

kod-первичный ключ, должен формироваться наподобии счетчика

Мне необходимо данные из таблицы продажи БД FoxPro перенести в таблицу prodaji БД Oracle, при этом при переносе нужно формировать kod и занести его сначала в таблицу jurnal, а потом в таблицу prodaji

Результат должен быть наподобии(напр, если в таблице jurnal уже было 11 записей):
kod/kod_tov/kod_p
12/1/111
12/1/112
12/1/223
13/2/222
13/2/114
14/3/444
Подключаюсь к БД Oracle и выбираю все значения поля kod
=SQLEXEC(lnConn,'select kod from prodaji order by kod desc', "k_pr")
Запоминаю последний kod(для того чтобы затем его увеличить на 1)
If Used("k_pr") then
k0=k_pr.kod
EndIf

выбираю данные из таблицы Продажи БД FoxPro, которые необходимо перенести:
select * from продажи into cursor prod
Дальше не могу сообразить. Помогите пожалуйста
...
Рейтинг: 0 / 0
перенос таблиц
    #36605387
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: MARGARITA23

Я не работал с ораклом, но в микрософте есть DTS с помощью которого легко перегоняю в базу разные ексельные файлы,
дбф-ки для последующей обработки.

> Мне необходимо данные из таблицы продажи БД FoxPro перенести в таблицу prodaji БД Oracle, при этом при переносе
> нужно формировать kod и занести его сначала в таблицу jurnal, а потом в таблицу prodaji


Это не правильно. При многопользовательской вставке в эту таблицу будут проблемы с уникальностью.
Для MSSQL, FireBird я сделал бы так:
стартуем транзакцию

вставляем запись в таблицу prodaji

получаем код вставленной записи

вставляем запись в таблицу jurnal

комитим транзакцию

если на каком-то этапе происходит ошибка, делаем ролбек и помечаем исходную запись как необработанную

переходим к следующей записи и начинаем со старта транзакции

После прохода по всем записям отбираем необработанные и анализируем причины ошибок
Это если нужно програмно и нет прав в базе

> Подключаюсь к БД Oracle и выбираю все значения поля kod
> =SQLEXEC(lnConn,'select kod from prodaji order by kod desc', "k_pr")
> Запоминаю последний kod(для того чтобы затем его увеличить на 1)
> If Used("k_pr") then
> k0=k_pr.kod
> EndIf

Ты опять забыла об указателе текущей записи. Он не обязательно будет на первой записи, это раз. А два, этим запросом ты
тянешь в программу все записи из таблицы prodaji ради одной цифры. На больших объемах данных в таблице это будет очень
заметно. К тому-же самостоятельная генерация первичного ключа - дело гиблое и неправильное. В оракле есть механизм
поддержки автоинкремента для первичного ключа( я не знаю как этот механизм называется ) и давно отработаны методы
получения этого значения на клиента. А ты пытаешся взять на себя часть функций сервера. Это не правильно. Как только
твоя программа попадет в многопользовательскую среду, она перестанет работать с таким подходом.

> выбираю данные из таблицы Продажи БД FoxPro, которые необходимо перенести:
> select * from продажи into cursor prod
> Дальше не могу сообразить. Помогите пожалуйста

Для MSSQL, FireBird с правами на создание тригера я сделал бы так:
сделал бы тригер на после-вставки(обновления/удаления) для таблицы prodaji, который-бы вставлял в таблицу jurnal
информацию о коде обрабатываемой записи и тип операции.
Потом сделал бы встывку данных в таблицу prodaji.

Я не пойму это разовая необходимость или делается постоянное решение импорта?
Если разовая, делал бы тригер(хотя такой тригер у меня был-бы изначально и постоянно ), если постоянная то делал бы
по первому варианту.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / перенос таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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