Visual FoxPro   Обзор графических пакетов 3GL   Компьютерная графика к экономической информатике   к 4GL - визуальному программированию

Программирование в VisualFoxPro 7.0

Перенос данных из Visual FoxPro на платформу клиент-сервер

В последнее время перед разработчиками все чаще возникает необходимость переноса приложений, созданных для базы данных Visual FoxPro, на платформу клиент-сервер. Наиболее простым способом переноса данных является использование мастера наращивания.

Мастер наращивания создает базу данных SQL Server, которая дублирует, насколько это возможно, функциональный диапазон базы данных Visual FoxPro. С помощью мастера наращивания вы можете:

Предупреждение

Наращивание может занимать много времени; это зависит от количества данных, объема сетевого трафика и числа параллельных запросов, обрабатываемых сервером. Для больших таблиц наращивание может выполняться в течение нескольких часов.

В данной главе рассмотрим использование мастера наращивания для переноса данных из Visual FoxPro в базу SQL Server.

  Использование мастера наращивания для переноса данных в базу данных SQL Server

Прежде чем приступить к процессу переноса данных из Visual FoxPro в SQL Server, рассмотрим особенности и ограничения, связанные с переносом полей таблиц, выражений, правил поддержки целостности.

  Соответствие типов данных

Соответствие типов данных Visual FoxPro и MS SQL Server представление в табл. 23.1.

Таблица 23.1. Соответствие типов данных

Сокращенное обозначение Тип данных Visual FoxPro Тип данных SQL Server
С Character char
Y Currency money
D Date datetime
Т DateTime datetime
В Double float
F Float float
G General image
I Integer int
L Logical bit
М Memo text
М (binary) Memo binary image
С (binary) Character binary binary
N Numeric float
Р Picture image

  Отображение выражений из Visual FoxPro в SQL Server мастером наращивания

Несмотря на то, что Visual FoxPro и Transact-SQL имеют несколько общих функций, многие функции Visual FoxPro не поддерживаются в SQL Server. Выражения Visual FoxPro, содержащиеся в правилах проверки достоверности на уровне полей и на уровне записей, а также в значениях по умолчанию мастер наращивания пытается преобразовать в выражения TransactSQL, используя соответствия, представленные в табл. 23.2.

Таблица 23.2. Отображение выражений из Visual FoxPro в SQL Server

Выражение Visual FoxPro Выражение SQL Server
Истина (.Т.) 1
Ложь (.F.) 0
# <>
.AND. AND
.NOT. NOT
.NULL. NULL
.OR. OR
= <; <=
= > >=
ASCO ASCII ()
AT() CHARINDEX ( )
CDOW ( ) DATENAME(dw, . . . )
CHR() CHAR ( )
CMONTH ( ) DATENAME (mm, . . • )
CTODO CONVERT {datetime, . . . )
CTOT ( ) CONVERT (datetime, . . . )
DATE ( ) GET DATE ( )
DATETIME ( } GETDATE ( )
DAY () DATEPART{dd, . . . )
DOW() DATEPART (dw, . . . )
DTOC ( ) CONVERT (varchar, ...)
DTOR ( ) RADIANS ( )
DTOT ( ) CONVERT (datetime, ...)
HOUR ( ) DATEPART (hh, . . . )
LIKEO PATINDEX ( )
MINUTE () DATEPART (mi, . . . )
MONTH ( ) DATEPART (mm, . . . )
MTON ( ) CONVERT (money, . . . )
NTOM ( ) CONVERT (float, . . . )
RTOD ( ) DEGREES ( )
SUBSTRO SUBSTRING ()
ТТОС ( ) CONVERT (char, , . . )
TTOD{) CONVERT (ciatetime, . . , )
YEAR ( ) DATEPARTfyy, ...}

Следующие функции имеют одинаковый вид и в Visual FoxPro, и в SQL Server.

CEILING ()

LOG (

LOWER ()

LTRIM(

RIGHT()

RTRIM()

SOUNDEX()

SPACE ()

STR()

STUFF ()

UPPER ()

  Отображение типов индексов мастером наращивания

Индексы SQL Server и индексы Visual FoxPro очень похожи. В табл. 23.3 показано, как типы индексов Visual FoxPro преобразуются в типы индексов SQL Server.

Таблица 23.3. Сопоставление типов индекса Visual FoxPro типам индекса SQL Server

Тип индекса Visual FoxPro Тип индекса SQL Server
Первичный Кластеризованный уникальный
Кандидат Уникальный
Уникальный, обычный Неуникальный

Мастер наращивания использует имена индексов Visual FoxPro в качестве имен индексов в SQL Server. Если имя индекса оказывается зарезервированным ключевым словом, мастер наращивания изменяет это имя, присоединяя к нему символ "_".

Замечание

SQL Server не поддерживает убывающие и возрастающие индексы и не разрешает использовать выражения в индексах сервера. Мастер наращивания в ходе наращивания индекса удаляет выражения Visual FoxPro из выражений индекса; на сервер передаются только имена полей.

  Отображение объектов мастером наращивания

В табл. 23.4 показано, как отображаются объекты из Visual FoxPro в SQL Server: Таблица 23.4. Отображение объектов мастером наращивания

Объект Visual FoxPro Объект SQL Server
База данных База данных
Таблица Таблица
Индексы Индексы
Поле Поле
Значение по умолчанию Значение по умолчанию
Правило проверки достоверности таблицы Хранимые процедуры SQL Server, вызываемые ИЗ триггеров UPDATE И INSERT
Правило проверки достоверности поля Хранимые процедуры SQL Server, вызываемые ИЗ триггеров UPDATE И INSERT
Постоянные отношения (там, где они используются в качестве ограничений ссылочной целостности) Триггеры UPDATE, INSERT И DELETE

  Отображение правил и ссылочной целостности мастером наращивания

В табл. 23.5 описываются триггеры, создаваемые мастером наращивания. Каждый конкретный триггер может содержать код, эмулирующий какиелибо (или все) функциональные возможности Visual FoxPro из числа указанных.

Таблица 23.5. Триггеры, создаваемые мастером наращивания

Триггер Эмулируемые функциональные возможности Visual FoxPro
UPDATE Правила проверки достоверности (на уровне полей и на уровне записей). Ссылочная целостность
INSERT Правила проверки достоверности (на уровне полей и на уровне записей). Ссылочная целостность (только триггеры дочерних таблиц)
DELETE (только родительские таблицы) Ссылочная целостность

  Установка драйвера ODBC

Перед запуском мастера наращивания необходимо установить драйвер ODBC для выбранной базы данных и определить источник данных для связи с базой данных. Также желательно определить именованное удаленное соединение.

Замечание

Установку драйверов ODBC, определение источника данных и создание именованного удаленного соединения мы рассмотрели в главе 22.

  Выбор базы данных и источника данных

На первом этапе работы с мастером наращивания вам необходимо выбрать и открыть локальную базу данных, которая будет переноситься в базу данных SQL Server (рис. 23.1).

gl23-1.jpg

Рис. 23.1. Выбор локальной базы данных с исходными таблицами

На втором этапе необходимо выбрать источник данных. Если вы используете именованное соединение для доступа к источнику данных, мастер наращивания будет связывать это именованное соединение со всеми удаленными представлениями, создаваемыми в процессе наращивания. Если при регистрации в источнике данных вы вместо имени соединения используете имя источника данных, а в дальнейшем задаете создание удаленных представлений, мастер наращивания создает именованное соединение с именем Upsize (или Upsize2, Upsize3 и т. д., если определение соединения с предлагаемым именем уже существует).

При нажатии кнопки Next (Далее) мастер откроет диалоговое окно ODBC Login (ODBC Логин). Если вы используете именованное соединение с сохраненным паролем, мастер зарегистрирует вас на выбранном сервере SQL Server, не требуя ввести регистрационную информацию ODBC.

  Выбор переносимых таблиц

На третьем этапе вы выбираете наращиваемые таблицы. Чтобы обеспечить правильность экспортируемых данных, мастер пытается открыть все таблицы базы данных, выбранной для наращивания, в режиме эксклюзивного пользования. Если какие-либо открытые таблицы находятся в совместном пользовании, мастер закрывает их и вновь открывает в эксклюзивном режиме, что может вызвать потерю некоторых временных отношений, установленных с помощью команды SET RELATION или SET SKIP. Все таблицы, которые не удастся открыть в эксклюзивном режиме, не смогут принять участие в наращивании.

Вы не можете изменить принимаемое по умолчанию соответствие для поля ключа, если новый тип данных не позволит индексировать это поле. Вы можете изменить соответствие для поля, входящего в состав ключа индекса, если выберете тип данных, допускающий индексирование; однако после этого вы, возможно, захотите для единообразия изменить типы данных для остальных полей ключа. Visual FoxPro выдает предупреждающее сообщение при попытке изменить соответствие для поля, которое не является полем ключа, но используется в индексе Visual FoxPro. Если вы сделали ошибку, нажмите кнопку Reset To Defaults (Сброс) — произойдет сброс типов данных.

При переносе мастером наращивания таблиц Visual FoxPro имена полей и типы данных автоматически преобразуются в поля SQL Server.

Мастер показывает вам устанавливаемое по умолчанию преобразование типов данных. При необходимости вы можете изменить тип данных на сервере базы данных с помощью раскрывающегося списка Server Type (Тип сервера).

  Определение базы данных назначения и ее параметров

На следующем этапе определяется база данных назначения. Если вы хотите добавить таблицы Visual FoxPro в существующую базу данных SQL Server, то можете задать наращивание до масштабов существующей базы данных. В этом случае мастер сразу переходит к восьмому этапу.

Если вы решили создать новую удаленную базу данных, ее имя может состоять не более чем из 30 символов, включая буквы, цифры и символы "#", "$" и "_". Пробелы не разрешаются.

Предупреждение

Для создания новой базы данных вы должны обладать соответствующими полномочиями. При возникновении проблем обратитесь к администратору базы данных SQL Server.

На шестом и седьмом этапах определяются устройство и размер для базы данных и журнала транзакций. Размер новой базы данных должен быть не менее 2 Мбайт: это минимальный размер, допускаемый в SQL Server. SQL Server создает для вашей базы данных журнал транзакций, который можно использовать для восстановления базы данных в случае серьезных ошибок в системе. В идеальном варианте базу данных и соответствующий ей журнал следует размещать на устройствах, находящихся на разных физических дисках. Эти устройства должны быть созданы до запуска мастера наращивания, поскольку он создает все новые устройства на одном и том же физическом диске, на котором расположено главное устройство базы данных.

По умолчанию мастер наращивания экспортирует структуру таблицы и ее содержимое. Наряду с именами полей и типами данных, вы также можете экспортировать индексы, значения по умолчанию, отношения (ограничения целостности на уровне ссылок) и правила.

Индексы и значения по умолчанию Visual FoxPro становятся индексами и значениями по умолчанию SQL Server. Если вы решили экспортировать правила, мастер наращивания пытается экспортировать в SQL Server правила уровня поля и правила уровня строки, в результате чего они превращаются в хранимые процедуры, вызываемые из триггеров SQL Server. Экспортированные табличные отношения также становятся частью этих триггеров.

Замечание

Если вы наращиваете табличные отношения, не забудьте выполнить и наращивание индексов, иначе производительность может заметно снизиться.

Если у вас только один физический диск, вы должны разместить базу данных и ее журнал на разных устройствах, чтобы можно было пользоваться командой сервера SQL DUMP TRANSACTION.

gl23-7.jpg

Рис. 23.2. Проект с информацией о переносе данных

gl23-8.jpg

Рис. 23.3. Часть отчета о выполнении наращивания базы данных

На последнем этапе вы можете выбрать следующие варианты завершения наращивания:

Первый и третий варианты доступны только в том случае, если вы обладаете на сервере SQL полномочием CREATE TABLE. Если вы выбрали один из вариантов, предусматривающий сохранение сгенерированного кода SQL, то весь код SQL, генерируемый мастером наращивания, будет сохранен на вашем жестком диске.

Мастер наращивания создает проект Report (Отчет) (рис. 23.2), который содержит таблицы, использующиеся для переноса данных из таблиц Visual FoxPro, а также отчеты о переносе данных (рис. 23.3).

Visual FoxPro   Обзор графических пакетов 3GL   Компьютерная графика к экономической информатике   к 4GL - визуальному программированию

Знаете ли Вы, почему "черные дыры" - фикция?
Согласно релятивистской мифологии, "чёрная дыра - это область в пространстве-времени, гравитационное притяжение которой настолько велико, что покинуть её не могут даже объекты, движущиеся со скоростью света (в том числе и кванты самого света). Граница этой области называется горизонтом событий, а её характерный размер - гравитационным радиусом. В простейшем случае сферически симметричной чёрной дыры он равен радиусу Шварцшильда".
На самом деле миф о черных дырах есть порождение мифа о фотоне - пушечном ядре. Этот миф родился еще в античные времена. Математическое развитие он получил в трудах Исаака Ньютона в виде корпускулярной теории света. Корпускуле света приписывалась масса. Из этого следовало, что при высоких ускорениях свободного падения возможен поворот траектории луча света вспять, по параболе, как это происходит с пушечным ядром в гравитационном поле Земли.
Отсюда родились сказки о "радиусе Шварцшильда", "черных дырах Хокинга" и прочих безудержных фантазиях пропагандистов релятивизма.
Впрочем, эти сказки несколько древнее. В 1795 году математик Пьер Симон Лаплас писал:
"Если бы диаметр светящейся звезды с той же плотностью, что и Земля, в 250 раз превосходил бы диаметр Солнца, то вследствие притяжения звезды ни один из испущенных ею лучей не смог бы дойти до нас; следовательно, не исключено, что самые большие из светящихся тел по этой причине являются невидимыми." [цитата по Брагинский В.Б., Полнарёв А. Г. Удивительная гравитация. - М., Наука, 1985]
Однако, как выяснилось в 20-м веке, фотон не обладает массой и не может взаимодействовать с гравитационным полем как весомое вещество. Фотон - это квантованная электромагнитная волна, то есть даже не объект, а процесс. А процессы не могут иметь веса, так как они не являются вещественными объектами. Это всего-лишь движение некоторой среды. (сравните с аналогами: движение воды, движение воздуха, колебания почвы). Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution