Что такое код fbsql_read_clob

fbsql_read_clob

(PHP 4 >= 4.2.0, PHP 5)

fbsql_read_clob — Read a CLOB from the database

Reads CLOB data from the database.

If a select statement contains BLOB and/or CLOB columns FrontBase will return the data directly when data is fetched. This default behavior can be changed with fbsql_set_lob_mode() so the fetch functions will return handles to BLOB and CLOB data. If a handle is fetched a user must call fbsql_read_clob() to get the actual CLOB data from the database.

A CLOB handle, returned by fbsql_create_clob() .

如可选并未指定,函数会尝试查找一个到 FrontBase 服务器的开放链接,且如没有找到这样的链接,会尝试通过不带参数调用 fbsql_connect() 来创建一个。

Returns a string containing the specified CLOB data.

Example #1 fbsql_read_clob() example

= fbsql_pconnect ( «localhost» , «_SYSTEM» , «secret» )
or die( «Could not connect» );
$sql = «SELECT CLOB_COLUMN FROM CLOB_TABLE;» ;
$rs = fbsql_query ( $sql , $link );
$row_data = fbsql_fetch_row ( $rs );
// $row_data[0] will now contain the clob data for the first row
fbsql_free_result ( $rs );

$rs = fbsql_query ( $sql , $link );
fbsql_set_lob_mode ( $rs , FBSQL_LOB_HANDLE );
$row_data = fbsql_fetch_row ( $rs );
// $row_data[0] will now contain a handle to the CLOB data in the first row
$clob_data = fbsql_read_clob ( $row_data [ 0 ]);
fbsql_free_result ( $rs );

  • fbsql_create_clob() — Create a CLOB
  • fbsql_read_blob() — Read a BLOB from the database
  • fbsql_set_lob_mode() — Set the LOB retrieve mode for a FrontBase result set

Новые книги

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

Для студентов по направлению подготовки 230400 – Информационные системы и технологии (квалификация «бакалавр»).

fbsql_read_clob

fbsql_read_clob — читает CLOB из БД.

Описание

string fbsql_read_clob (string clob_handle [, resource link_identifier])

Возвращает строку, содержащую CLOB, специфицированный clob_handle.

fbsql_read_clob() читает CLOB-данные из БД. Если оператор select содержит BLOB и/или CLOB-столбцы, FrontBase возвратит данные непосредственно при их извлечении. Это поведение по умолчанию может быть изменено функцией fbsql_set_lob_mode() , так что функции извлечения будут возвращать дескрипторы BLOB и CLOB-данных. Если дескриптор извлечён, пользователь обязан вызвать fbsql_read_clob() для получения CLOB-данных из БД.

Что такое код fbsql_read_clob

fbsql_read_clob — читает CLOB из БД.

Описание

string fbsql_read_clob (string clob_handle [, resource link_identifier])

Возвращает строку, содержащую CLOB, специфицированный clob_handle.

fbsql_read_clob() читает CLOB-данные из БД. Если оператор select содержит BLOB и/или CLOB-столбцы, FrontBase возвратит данные непосредственно при их извлечении. Это поведение по умолчанию может быть изменено функцией fbsql_set_lob_mode() , так что функции извлечения будут возвращать дескрипторы BLOB и CLOB-данных. Если дескриптор извлечён, пользователь обязан вызвать fbsql_read_clob() для получения CLOB-данных из БД.

Что такое код fbsql_read_clob

fbsql_read_clob — Read a CLOB from the database

Description string fbsql_read_clob ( string clob_handle [, resource link_identifier])

Returns: A string containing the CLOB specified by clob_handle.

fbsql_read_clob() reads CLOB data from the database. If a select statement contains BLOB and/or CLOB columns FrontBase will return the data directly when data is fetched. This default behavior can be changed with fbsql_set_lob_mode() so the fetch functions will return handles to BLOB and CLOB data. If a handle is fetched a user must call fbsql_read_clob() to get the actual CLOB data from the database.

Экспорт CLOB в текстовый файл с использованием Oracle SQL Developer

Я использую Oracle SQL Developer и пытаюсь экспортировать таблицу в файл CSV. Некоторые поля являются полями CLOB, и во многих случаях записи обрезаются при экспорте. Я ищу способ получить все это, так как моя конечная цель — не использовать Oracle здесь (я получил дамп Oracle — который был загружен в oracle db, но я использую данные в другом формате, так что через CSV как посредник).

Если есть несколько решений для этого, учитывая, что это однократная процедура для меня, я не возражаю против более хакерских решений для более сложных решений «сделай все правильно».

4 ответа

если у вас есть доступ к файловой системе в вашей базе данных, вы можете сделать что-то вроде этого:

Который я скопировал и вставил с этого сайта . р>

Вы также можете найти этот предыдущий вопрос о UTL_FILE полезно. Это касается экспорта в CSV. Однако я не знаю и не знаю, как UTL_FILE обрабатывает CLOB.

Вы можете использовать скрипт Python, чтобы позаботиться об экспорте, CLOB не будут усечены:

предполагая, что под дампом Oracle вы имели в виду .dmp (либо из экспорта, либо из expdp), вы смотрите двоичный файл. Вам нужно будет импортировать файл дампа в базу данных Oracle, а затем экспортировать данные в обычный текст, используя UTL_FILE или другим способом.

Вот краткий, но общий сценарий Python, который делает именно это — выдает таблицы (среди прочего, с полями CLOB) в плоский файл CSV: OraDump

Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Базы данных

TO_CLOB ФУНКЦИЯ

В этом учебном пособии вы узнаете, как использовать Oracle/PLSQL функцию TO_CLOB с синтаксисом и примерами.

Описание

Функция Oracle/PLSQL TO_CLOB преобразует символьные данные типа CLOB

Синтаксис

Синтаксис функции Oracle/PLSQL TO_CLOB:

Параметры или аргументы

expression может принимать типы данных: CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB OR NCLOB.

Функция TO_CLOB возвращает значение CLOB.

Применение

Функцию TO_CLOB можно использовать в следующих версиях Oracle/PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i

Пример

Рассмотрим пример функции TO_CLOB и изучим, как использовать функцию TO_CLOB в Oracle/PLSQL.

SQL в CSV с помощью DBMS_SQL

Часто при решении задач системной интеграции требуется представить некоторый объем данных в том или ином формате. При этом потребителем данных может быть кто угодно, а вот источником почти всегда является корпоративная база данных. К примеру, производитель может требовать у поставщика периодические отчеты о движении своих товаров в формате XLSX или XML, etc.

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

Если принять, что по факту в корне процесса выборки данных лежит SQL-запрос, то в идеале цепочку преобразований хотелось бы видеть такой:

где
— исходные данные,
— SQL-запрос на выборку данных,
— функция, которая преобразует выборку в требуемый формат,
— данные в требуемом формате.

Для Oracle PL/SQL существует ряд встроенных и сторонних пакетов, которые реализуют подобную функциональность. Это DBMS_XMLGEN, DBMS_XMLQUERY, AS_XLSX, PL/JSON и другие.

Однако, когда встал вопрос о преобразовании данных в формат CSV, готовых решений почему-то не нашлось. Пришлось делать самому, далее будет показано, как.

Создать инструмент (пакет PL/SQL), который на входе принимает произвольный SELECT-запрос в виде строки или в виде курсорной переменной, а на выходе возвращает объект типа CLOB, инкапсулирующий данные в формате CSV. В случае любой ошибки должен возвращаться NULL. Сам формат CSV в представлении не нуждается — это строки, элементы которых разделены некоторым символом, чаще всего «;», но в общем случае в качестве разделителя может выступать произвольный символ. Примем, что для разделения строк используются символы 0x0D + 0x0A. Первая строка в CSV-файле, как правило, является заголовочной и определяет имена столбцов.

Определим интерфейс пакета

Здесь две перегруженных процедуры, разница между ними в том, что одна из них принимает запрос в виде строки, а другая — в виде ссылки на курсор. Второй параметр является выходным, это требуемый результат в CLOB-объекте. Наконец, третий параметр — CSV-разделитель.

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

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

Для процедуры, принимающей курсорную переменную, все проще — начиная с 11-ой версии Oracle стало доступно преобразование «курсорная переменная → номер курсора SQL».

Функция DBMS_SQL.TO_CURSOR_NUMBER преобразует переменную REFCURSOR (сильно- или слаботипизированную) в номер курсора SQL, который затем может передаваться подпрограммам DBMS_SQL. При этом курсорная переменная должна быть открыта до ее передачи функции DBMS_SQL.TO_CURSOR_NUMBER.

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

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

Для этого необходимо объявить коллекцию PL/SQL на базе типа коллекции DBMS_SQL.DESC_TAB (или DESC_TAB2, если запрос может возвращать имена столбцов, длина которых превышает 30 символов). После этого можно использовать методы коллекций для перебора таблицы и извлечения информации о курсоре.

Далее пакету DBMS_SQL необходимо сообщить тип каждого столбца, выбранного при помощи динамического запроса. Это делается посредством вызова DEFINE_COLUMN.

Во втором аргументе DEFINE_COLUMN передается число — последовательная позиция столбца в списке. Третий аргумент задает тип данных столбца курсора. В нем передается выражение соответствующего типа. Иначе говоря, DBMS_SQL.DEFINE_COLUMN передается не строка с названием типа (скажем, «VARCHAR2»), а переменная, определенная с типом VARCHAR2.

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

Подготовительные операции завершены, теперь можно сформировать строку заголовка и начинать извлекать данные.

Данные извлекаются построчно с помощью DBMS_SQL.FETCH_ROWS и последующих вызовов DBMS_SQL.COLUMN_VALUE для получения значения отдельных столбцов.

Далее остается только собрать результирующий CSV

И закрыть курсор

Варианты использования пакета

В разработке помогла книга
Фейерштейн С., Прибыл Б. — Oracle PL/SQL. Для профессионалов.

88 DBMS_LOB

The DBMS_LOB package prov >BLOBs , CLOBs , NCLOBs , BFILEs , and temporary LOBs. You can use DBMS_LOB to access and manipulate specific parts of a LOB or complete LOBs.

This chapter contains the following topics:

Rules and Limits

Rules and Limits

Using DBMS_LOB

Overview

DBMS_LOB can read and modify BLOBs , CLOBs , and NCLOBs ; it prov >BFILEs . The bulk of the LOB operations are provided by this package.

Security Model

This package must be created under SYS . Operations prov >SYS .

Any DBMS_LOB subprogram called from an anonymous PL/SQL block is executed using the privileges of the current user. Any DBMS_LOB subprogram called from a stored procedure is executed using the privileges of the owner of the stored procedure.

When creating the procedure, users can set the AUTHID to indicate whether they want definer’s rights or invoker’s rights. For example:

For more information on AUTHID and privileges, see Oracle Database PL/SQL Language Reference

You can prov >BFILEs using the DIRECTORY feature discussed in BFILENAME function in the Oracle Database SecureFiles and Large Objects Developer’s Guide and the Oracle Database SQL Language Reference .

For information about the security model pertaining to temporary LOBs, see Operational Notes.

Constants

The DBMS_LOB package uses the constants shown in following tables:

Table 88-1 DBMS_LOB Constants — Basic

Учебник РНР
НазадВперёд

Create the TEMP LOB with call duration

Open the specified BFILE read-only

Open the specified LOB read-only

Open the specified LOB read-write

Maximum size of a LOB in bytes

Create the TEMP LOB with session duration

Table 88-2 DBMS_LOB Constants — Option Types

Constant Type Value Description

Set/Get the SECUREFILE compress option value

Set/Get the SECUREFILE Deduplicate option value

Get the SECUREFILE encrypt option value

Table 88-3 DBMS_LOB Constants — Option Values

Constant Definition Value Description

For SETOPTIONS Procedures, set compress off; for GETOPTIONS Functions, compress is off

For SETOPTIONS Procedures, set compress on; for GETOPTIONS Functions, compress is on

For SETOPTIONS Procedures, set deduplicate is off; for GETOPTIONS Functions, deduplicate is off

For SETOPTIONS Procedures, set deduplicate is on; for GETOPTIONS Functions, deduplicate is on

Table 88-4 DBMS_LOB Constants — DBFS State Value Types

Constant Definition Value Description

LOB has never been archived

LOB was archived, but as been read back in to the RDBMS

LOB is currently archived

Table 88-5 DBMS_LOB Constants — DBFS Cache Flags

Constant Definition Value Description

Put the LOB data to the archive, but keep the data in the RDBMS as a cached version

Put the LOB data to the archive, and remove the data from the RDBMS.

Table 88-6 DBMS_LOB Constants — Miscellaneous

Constant Definition Value Description

Maximum number of bytes allowed in the content type string

The maximum length of DBFS pathnames

Datatypes

The DBMS_LOB package uses the datatypes shown in Table 88-7.

Table 88-7 Datatypes Used by DBMS_LOB

Constant Definition Value Description

Source or destination binary LOB.

Source or destination RAW buffer (used with BLOB ).

Source or destination character LOB (including NCLOB ).

Source or destination character buffer (used with CLOB and NCLOB ).

Specifies the size of a buffer or LOB, the offset into a LOB, or the amount to access.

Large, binary object stored outside the database.

The DBMS_LOB package defines no special types.

An NCLOB is a CLOB for holding fixed-width and varying-width, multibyte national character sets.

The clause ANY_CS in the specification of DBMS_LOB subprograms for CLOB s enables the CLOB type to accept a CLOB or NCLOB locator variable as input.

Operational Notes

To use LOBs in your database, you must first use SQL data definition language (DDL) to define the tables that contain LOB columns.

Internal LOBs

To populate your table with internal LOBs after LOB columns are defined in a table, you use the SQL data manipulation language (DML) to initialize or populate the locators in the LOB columns.

External LOBs

For an external LOB (BFILE) to be represented by a LOB locator, you must:

Ensure that a DIRECTORY object representing a valid, existing physical directory has been defined, and that physical files (the LOBs you plan to add) exist with read permission for the database. If your operating system uses case-sensitive path names, then be sure you specify the directory in the correct format.

Pass the DIRECTORY object and the filename of the external LOB you are adding to the BFILENAME function to create a LOB locator for your external LOB.

Once you have completed these tasks, you can insert or update a row containing a LOB column using the specified LOB locator.

After the LOBs are defined and created, you can then SELECT from a LOB locator into a local PL/SQL LOB variable and use this variable as an input parameter to DBMS_LOB for access to the LOB value.

For details on the different ways to do this, you must refer to the section of the Oracle Database SecureFiles and Large Objects Developer’s Guide that describes «Accessing External LOBs (BFILEs).»

Temporary LOBs

The database supports the definition, creation, deletion, access, and update of temporary LOBs. Your temporary tablespace stores the temporary LOB data. Temporary LOBs are not permanently stored in the database. Their purpose is mainly to perform transformations on LOB data.

For temporary LOBs, you must use the OCI, PL/SQL, or another programmatic interface to create or manipulate them. Temporary LOBs can be either BLOBs , CLOBs , or NCLOBs .

A temporary LOB is empty when it is created. By default, all temporary LOBs are deleted at the end of the session in which they were created. If a process dies unexpectedly or if the database crashes, then temporary LOBs are deleted, and the space for temporary LOBs is freed.

There is also an interface to let you group temporary LOBs together into a logical bucket. The duration represents this logical store for temporary LOBs. Each temporary LOB can have separate storage characteristics, such as CACHE / NOCACHE . There is a default store for every session into which temporary LOBs are placed if you don’t specify a specific duration. Additionally, you are able to perform a free operation on durations, which causes all contents in a duration to be freed.

There is no support for consistent read (CR), undo, backup, parallel processing, or transaction management for temporary LOBs. Because CR and roll backs are not supported for temporary LOBs, you must free the temporary LOB and start over again if you encounter an error.

Because CR, undo, and versions are not generated for temporary LOBs, there is potentially a performance impact if you assign multiple locators to the same temporary LOB. Semantically, each locator should have its own copy of the temporary LOB.

A copy of a temporary LOB is created if the user modifies the temporary LOB while another locator is also pointing to it. The locator on which a modification was performed now points to a new copy of the temporary LOB. Other locators no longer see the same data as the locator through which the modification was made. A deep copy was not incurred by permanent LOBs in these types of situations, because CR snapshots and version pages enable users to see their own versions of the LOB cheaply.

You can gain pseudo- REF semantics by using pointers to locators in OCI and by having multiple pointers to locators point to the same temporary LOB locator, if necessary. In PL/SQL, you must avoid using more than one locator for each temporary LOB. The temporary LOB locator can be passed by reference to other procedures.

Because temporary LOBs are not associated with any table schema, there are no meanings to the terms in-row and out-of-row temporary LOBs. Creation of a temporary LOB instance by a user causes the engine to create and return a locator to the LOB data. The PL/SQL DBMS_LOB package, PRO*C/C++, OCI, and other programmatic interfaces operate on temporary LOBs through these locators just as they do for permanent LOBs.

There is no support for client side temporary LOBs. All temporary LOBs reside in the server.

Temporary LOBs do not support the EMPTY_BLOB or EMPTY_CLOB functions that are supported for permanent LOBs. The EMPTY_BLOB function specifies the fact that the LOB is initialized, but not populated with any data.

A temporary LOB instance can only be destroyed by using OCI or the DBMS_LOB package by using the appropriate FREETEMPORARY or OCIDurationEnd statement.

A temporary LOB instance can be accessed and modified using appropriate OCI and DBMS_LOB statements, just as for regular permanent internal LOBs. To make a temporary LOB permanent, you must explicitly use the OCI or DBMS_LOB COPY command, and copy the temporary LOB into a permanent one.

Security is provided through the LOB locator. Only the user who created the temporary LOB is able to see it. Locators are not expected to be able to pass from one user’s session to another. Even if someone did pass a locator from one session to another, they would not access the temporary LOBs from the original session. Temporary LOB lookup is localized to each user’s own session. Someone using a locator from somewhere else is only able to access LOBs within his own session that have the same LOB ID. Users should not try to do this, but if they do, they are not able to affect anyone else’s data.

The database keeps track of temporary LOBs for each session in a v$ view called V$TEMPORARY_LOBS , which contains information about how many temporary LOBs exist for each session. V$ views are for DBA use. From the session, the database can determine which user owns the temporary LOBs. By using V$TEMPORARY_LOBS in conjunction with DBA_SEGMENTS , a DBA can see how much space is being used by a session for temporary LOBs. These tables can be used by DBAs to monitor and guide any emergency cleanup of temporary space used by temporary LOBs.

The following notes are specific to temporary LOBs:

All functions in DBMS_LOB return NULL if any of the input parameters are NULL . All procedures in DBMS_LOB raise an exception if the LOB locator is input as NULL .

Operations based on CLOBs do not verify if the character set >CLOB parameters, VARCHAR2 buffers and patterns, and so on) match. It is the user’s responsibility to ensure this.

Data storage resources are controlled by the DBA by creating different temporary tablespaces. DBAs can define separate temporary tablespaces for different users, if necessary.

Что такое код fbsql_read_clob

fbsql_read_clob — Read a CLOB from the database

Description

string fbsql_read_clob (string clob_handle, resource [link_identifier])

Returns: A string containing the CLOB specified by clob_handle.

fbsql_read_clob() reads CLOB data from the database. If a select statement contains BLOB and/or CLOB columns FrontBase will return the data directly when data is fetched. This default behavior can be changed with fbsql_set_lob_mode() so the fetch functions will return handles to BLOB and CLOB data. If a handle is fetched a user must call fbsql_read_clob() to get the actual CLOB data from the database.

fbsql_read_clob

Read a CLOB from the database ( PHP 4 >= 4.2.0, PHP 5 )

Reads CLOB data from the database.

If a select statement contains BLOB and/or CLOB columns FrontBase will return the data directly when data is fetched. This default behavior can be changed with fbsql_set_lob_mode() so the fetch functions will return handles to BLOB and CLOB data. If a handle is fetched a user must call fbsql_read_clob() to get the actual CLOB data from the database.

Parameters

If optional and not specified, the function will try to find an open link to the FrontBase server and if no such link is found it will try to create one as if fbsql_connect() was called with no arguments

Return Values

Returns a string containing the specified CLOB data.

Examples

Example 713. fbsql_read_clob() example

= fbsql_pconnect ( «localhost» , «_SYSTEM» , «secret» )
or die( «Could not connect» );
$sql = «SELECT CLOB_COLUMN FROM CLOB_TABLE;» ;
$rs = fbsql_query ( $sql , $link );
$row_data = fbsql_fetch_row ( $rs );
// $row_data[0] will now contain the clob data for the first row
fbsql_free_result ( $rs );

$rs = fbsql_query ( $sql , $link );
fbsql_set_lob_mode ( $rs , FBSQL_LOB_HANDLE );
$row_data = fbsql_fetch_row ( $rs );
// $row_data[0] will now contain a handle to the CLOB data in the first row
$clob_data = fbsql_read_clob ( $row_data [ 0 ]);
fbsql_free_result ( $rs );

Илон Маск рекомендует:  Книги о Flash технологиях
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Type Description