Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
DBF структура и БД Oracle
|
|||
|---|---|---|---|
|
#18+
Приветствую, уважаемые. Вобщем тема не очень отражает суть вопроса, извиняюсь, но кратко сформулировать проблематично. Вступление: в БД Oracle есть таблица "tab1", в ней два поля Field1 Numeric(4) и Field2 VarChar2(4). В результате отработки нижеприведенного кода получается файл "Temp.dbf", в котором в полях FIELD_TYPE, FIELD_LEN и FIELD_DEC для исходных столбцов Field1 и Field2 указано N, 6, пустое C, 4, пустое соответственно. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2004, 14:42 |
|
||
|
DBF структура и БД Oracle
|
|||
|---|---|---|---|
|
#18+
Подозреваю, что это связано с особенностями физического хранения полей типа Numeric в серверных базах данных и в FoxPro. В FoxPro поля типа Numeric храняться как символьные строки. Т.е. чило 123 так физически и хранится как символьная строка "123" с ведущими пробелами. А вот в серверных базых данных это не так. Посмотри описание типов данных для Oracle. Для MS SQL, например, размерность Numeric от 1 до 9 физически храниться в 5 байтах. Т.е. и N(1) и N(9) физически занимают одно и то же пространство в 5 байт. Как с этим бороться и, главное, нужно ли, я не знаю. Разве это как-то влияет на работу? PS: Для MS SQL разница составляет 3 символа. Т.е. если на сервере N(9), то в FoxPro N(12) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2004, 18:30 |
|
||
|
DBF структура и БД Oracle
|
|||
|---|---|---|---|
|
#18+
Hi Молодой Я! Если учесть что в фоксовом поле N(4) ты не сможешь хранить 4-х значные отрицательные числа (знак минус в фоксе считается наравне с реальными числами), а в Oracle в Numeric(4) - запросто. А также если учесть что в Oracle в поле Numeric(4, 1) ты сможешь хранить числа с 3-мя знаками до зяпятой + 1 после (а десятичная точка опять таки не входит в расчёт - в отличие от фокса!) - мы и получаем что для корректного представления Numeric-чисел в фоксе требуется накинуть 1 или 2 разряда - очевидно для простоты (чтоб не определять есть десятичные разряды или их нету совсем) накидывается всегда 2 "лишних" разряда - чтобы гарантированно поместились все возможные значения из диапазона. Posted via ActualForum NNTP Server 1.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2004, 16:17 |
|
||
|
DBF структура и БД Oracle
|
|||
|---|---|---|---|
|
#18+
ВладимирМКак с этим бороться и, главное, нужно ли, я не знаю. Разве это как-то влияет на работу? Igor KorolyovЕсли учесть что в фоксовом поле N(4) ты не сможешь хранить 4-х значные отрицательные числа (знак минус в фоксе считается наравне с реальными числами), а в Oracle в Numeric(4) - запросто. А также если учесть что в Oracle в поле Numeric(4, 1) ты сможешь хранить числа с 3-мя знаками до зяпятой + 1 после Поясню ситуацию: переводим DBF-ники в таблицы БД Oracle. Но для совместимости версий необходимо пока данные перекидывать в Oracle и обратно в dbf при работе программы. И вот при запуске программы надо данные вытянуть из Oracle и создать dbf-файлы. Хранить шаблоны dbf-ников не хотелось бы и писать в лоб create ... тоже, так как есть select ... from ... into DBF ... . Вот только проблема с размерностью тут получается... :( Поле, которое N(4) - айдишник строки, следовательно там ни минусов ни знаков после запятой быть не может по определению и лишняя разрядность мне совсем не нужна, т.к. по этому полю в прогах создаются индексы, происходит seek и т.д. :( Неужели придется хранить шаблоны dbf-ников??? ;-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2004, 12:11 |
|
||
|
DBF структура и БД Oracle
|
|||
|---|---|---|---|
|
#18+
Hi Молодой Я! Судя по твоему описанию подобные "шаблоны" уже имебются так или иначе! Т.е. программа работающая с dbf-ами явно ожидает увидеть таблицы вполне определённого формата - значит тебе нужно их не создавать, а заполнять - т.е. проводить репликацию данных. Вообще вопрос репликации весьма сложный - и размерности полей там далеко не самая неприятная часть. Если поток данных однонаправленный (только с сервера в dbf-ы и никогда наоборот) - то конечно полегче будет... А с размером ты никак не разберёшься - это специфика работы с ODBC как я понимаю. Откуда фоксу знать что у тебя там "только положительные" и "только целые". Он работает так чтобы при всяком раскладе ошибок не было - так что усекай, или - лучше - не создавай dbf с нуля, а заполняй уже имеющийся через Append или в цикле по SPT курсору. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2004, 02:11 |
|
||
|
DBF структура и БД Oracle
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Он работает так чтобы при всяком раскладе ошибок не было - так что усекай, или - лучше - не создавай dbf с нуля, а заполняй уже имеющийся через Append или в цикле по SPT курсору. Да, спасибо. Я уже понял, что придется где-то иметь заготовку dbf-ника или в проге создавать необходимую структуру, а автоматом никак не пройдет. Единственный еще вопрос: что за SPT курсор? Как его создать и как юзать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2004, 11:23 |
|
||
|
DBF структура и БД Oracle
|
|||
|---|---|---|---|
|
#18+
Hi Молодой Я! Единственный еще вопрос: что за SPT курсор? Это тот курсор что ты создаёшь по SQLEXEC() - Сама технология "прямых запросов" кратко называется SPT - или, если полно, SQL Pass Through Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2004, 18:47 |
|
||
|
DBF структура и БД Oracle
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Hi Молодой Я! Единственный еще вопрос: что за SPT курсор? Это тот курсор что ты создаёшь по SQLEXEC() - Сама технология "прямых запросов" кратко называется SPT - или, если полно, SQL Pass Through О, теперь понятно все. Спасибо за помощь и ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2004, 18:54 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32750629&tid=1595518]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 260ms |
| total: | 516ms |

| 0 / 0 |
