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

спецификация-файла - полный путь и имя файла для внешнего файла данных. Файл не должен существовать во время создания таблицы. При этом в Firebird 1.5 и выше оператор CREATE будет неудачным, если спецификация ссылается на несконфигуриро- ванное размещение внешнего файла. См. раздел "Организация защиты внешних файлов" далее в этой главе и разд. "Конфигурирование внешних размещений" главы 36.

определение-столбца - обычное определение столбца Firebird. Могут быть заданы не символьные типы данных; при этом обеспечивается неявное преобразование в этот тип каждой строки, выделяемой из местоположения столбца во внешней записи.

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

* В Linux/UNIX это один символ перевода строки ASCII 10.

* В Windows это упорядоченная пара ASCII 13 (возврат каретки) и ASCII 10.

* В Mac OS это ASCII 10 и ASCII 13.

* Другие операционные системы могут использовать другой порядок или другие символы.

Ограничения и рекомендацииОрганизация защиты внешних файлов

Во всех версиях Firebird список каталогов должен быть сконфигурирован для ограничения размещений, где Firebird будет отыскивать или создавать внешние файлы. Параметры конфигурации ExternaiFiieAccess в firebird.conf (для серверов версии 1.5) или external_file_directory В ibconfig/isc_config (для версии 1.0.x) см. В главе 3. По умолчанию Firebird 1.5 инсталлируется без доступа к внешним файлам, в то время как версия 1.0.x дает открытый доступ к любому файлу файловой системы.

! ! !

ПРИМЕЧАНИЕ. Метод конфигурирования и возможности защиты системы от злоумышленных атак через доступ к внешним файлам различаются в разных версиях сервера.

. ! .

Формат внешних данных

Firebird сам создаст внешний файл, если не найдет его по месту, указанному в спецификации CREATE EXTERNAL TABLE ' <спецификация--файла>'. ЕСЛИ файл уже существует, ТО каждая его запись должна быть фиксированной длины, состоять из полей фиксированной длины, которая должна в точности соответствовать длине в байтах спецификациям столбцов в определении таблицы. Если приложение, создавшее файл, использует жесткие символы перевода строки (например, двухбайтовую последовательность возврат каретки и перевод строки в текстовых файлах Windows), включите в описание столбец для приспособления к этой последовательности. См. далее разд. "Символы конца строки".

Данные BLOB и массивы не могут быть считаны или записаны во внешний файл.

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

! ! !

СОВЕТ. Убедитесь, что вы выделили достаточный размер для размещения ваших данных. Для информации о размерах обратитесь к соответствующей главе в части III. Рисунок 8.1 описывает правила преобразования типов данных.

. ! .

CHAR в сравнении с VARCHAR

Использование VARCHAR в определении столбца внешнего строкового поля не рекомендуется, потому что он не является легко переносимым форматом:

<2-байтовое беззнаковое короткое х строка символьных байтов>

VARCHAR требует начального 2-байтового беззнакового числа для включения количества байтов строки, непосредственно за которым следует строка[44]. Для многих внешних приложений может оказаться трудным или невозможным получить доступ к данным. По этой причине используйте CHAR вместо VARCHAR для строковых полей и убедитесь, что приложение переводит эту строку в полный размер.

Символы конца строки

Когда вы создаете таблицу, которая будет использована для импорта внешних данных, вы должны определить столбец, содержащий символ конца строки (End-Of-Line, EOL) или новой строки, если приложение, создающее этот файл, включает такой символ. Размер столбца должен быть достаточным, чтобы хранить конкретный системный символ EOL (обычно 1 или 2 байта). Для большинства версий UNIX это 1 байт. Для Windows и Macintosh - 2 байта.

Советы по добавлению непечатаемых символов

При добавлении данных во внешний файл внешняя функция ASCII_CHAR (десятичный- код-ASCII) из библиотеки функций ib udf может быть использована для передачи в

оператор SQL непечатаемых символов в виде выражения для столбцов разделителей строк. Например, следующий оператор добавляет символы возврата каретки и перевода строки в столбец:

INSERT INTO MY_EXT_TABLE (

столбцы . . .,

CRIIF)

VALUES (

Значение-столбца. . .,

ASCII_CHAR(13) и ASCII_CHAR(10));

Перейти на страницу:

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

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Майерс , Скотт Мейерс

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