Читаем Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ полностью

Альтернативой этому является создание таблицы специально для хранения непечатаемых символов, которые могут понадобиться вашим приложениям. Просто создайте текстовый файл на той же платформе, что и ваш сервер, используя редактор, который "отображает" непечатаемые символы. Откройте вашу "непечатаемую" таблицу, используя интерактивный инструмент, скопируйте и вставьте символы непосредственно в таблицу. Для операторов, выполняющих добавление во внешний файл, символ может быть получен с помощью подзапроса из таблицы[45].

Операции

Только операции INSERT и SELECT могут быть выполнены над строками внешней таблицы. Попытки изменить или удалить строки вернут ошибки.

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

! ! !

СОВЕТ. Если вы хотите, чтобы ваша таблица находилась под управлением транзакции, создайте другую, внутреннюю таблицу Firebird и добавьте данные из внешней таблицы во внутреннюю.

. ! .

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

<p>Импорт внешних файлов в таблицы Firebird</p>

Для импорта внешних файлов в таблицы Firebird вначале убедитесь, что у вас установлены соответствующие условия доступа. См. разд. "Конфигурирование внешних размещений"главы 36 относительно параметра сервера ExternairiieAccess.

1. Создайте таблицу Firebird, которая позволит вам просматривать внешние данные. Объявите все столбцы как CHAR. Текстовый файл, содержащий данные, должен находиться на сервере. В следующем примере внешний файл существует в системе UNIX, следовательно, символ EOL занимает 1 байт.

CREATE TABLE EXT_TBL EXTERNAL FILE 'file.txt' (

FNAME CHAR (10) ,

LNAME CHAR(20),

HDATE CHAR(10),

NEWLINE CHAR(1));

COMMIT;

2. Создайте другую таблицу Firebird, которая в итоге будет вашей рабочей таблицей. Включите столбец для символа EOL, если вы позже собираетесь экспортировать данные из внутренней таблицы назад во внешний файл:

CREATE TABLE PERSONNEL (

FIRST_NAME VARCHAR(10),

LAST_NAME VARCHAR(20) ,

HIRE_DATE DATE,

NEW_LINE CHAR(1));

COMMIT;

3. Используя текстовый редактор или приложение, которое может выводить текст фиксированного формата, создайте и заполните внешний файл. Сделайте все записи одинаковой длины, заполняя неиспользуемые символы пробелами, и добавьте символ(n) EOL в конец каждой записи.

Количество символов в строке EOL зависит от платформы - см. предыдущие замечания.

Следующий пример иллюстрирует запись фиксированной длины в 41 символ, b представляет пробел, a n - EOL:

12345678901234567890123456789012345678901

fname. . . . . lname. . . . . . . hdate n

JamesbbbbbStarkeybbbbbbbbbbbbb2004-12-10n

ClaudiobbbValderramabbbbbbbbbb2003-10-01n

4. Оператор SELECT для таблицы EXT_TLB возвращает записи из внешнего файла:

SELECT FNAME, LNAME, HDATE FROM EXT_TBL;

FNAME

LNAME

HDATE

=====

=====

=====

James

Starkey

2004-12-10

Claudio

Valderrama

2003-10-01

5. Добавьте данные в таблицу назначения:

INSERT INTO PERSONNAL

SELECT FNAME, LNAME, CAST( HDATE AS DATE),

NEWLINE FROM EXT_TBL;

COMMIT;

! ! !

ПРИМЕЧАНИЕ. Если вы пытаетесь обратиться к файлу, в то время как он еще открыт другим приложением, эта попытка даст сбой. Обратное также верно, и более того: когда ваше приложение откроет файл как таблицу, он будет недоступен для других приложений, пока ваше приложение не отсоединится от базы данных[46].

. ! .

Теперь, когда вы выполните SELECT для PERSONNEL, данные из вашей внешней таблицы появятся в конвертированной форме:

SELECT FIRST_NAME, LAST_NAME, HIRE_DATE

FROM PERSONNEL;

FIRST NAME LAST NAME HIRE DATE

James Starkey 10-DEC-2004

Claudio Valderrama 01-OCT-2003

<p>Экспорт таблиц Firebird во внешние файлы</p>

Вернемся к примеру в предыдущем разделе. Шаги по экспорту данных в нашу внешнюю таблицу похожи:

1. Откройте внешний файл в текстовом редакторе и удалите в нем все. Выйдите из текстового редактора и снова выполните запрос SELECT к таблице EXT_TBL. Она должна быть пустой.

2. Используйте оператор INSERT для копирования записей Firebird из PERSONNEL во внешний файл file.txt:

INSERT INTO EXT_TBL

SELECT FIRST_NAME, LAST_NAME,

cast (HIRE_DATE AS VARCHAR(ll),

ASCII_CHAR(10) FROM PERSONNEL

WHERE FIRST_NAME LIKE 'Clau%';

3. Теперь выберите данные из внешней таблицы:

SELECT FNAME, LNAME, HDATE FROM EXT_TBL;

FNAME LNAME HDATE

Claudio Valderrama 01-OCT-2004

! ! !

СОВЕТ. Внешняя функция ASCII_CHAR находится в библиотеке ib_udf в каталоге /UDF каталога инсталляции Firebird. Ее объявление может быть найдено в скрипте ib_udf.sql. Об использовании внешних функций см. главу 21.

. ! .

<p>Конвертирование внешних таблиц во внутренние</p>
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных