Extracting portions of a long database column
I have Oracle 9i.
I need to first grab the first 240 chars of a long column and then split the column into two 32k character chunks. How would I do this?
THanks for any help.
I do not have control over this database so I only have a field that is a long filled with note text.
Thanks for all your help everyone.
Similar Messages
-
URGENT - Extract Image Files From Long Raw Column
Hi.
I have to extract image files (tif and wmf format) from "long raw" column and put them in a directory, using a PL/SQL procedure.
Can anyone help me.
ThanksWell that is interesting, that ORA returns no records on Metalink. Anyway, that was for my own curiosity.
As you are on 10g, this is how I would write a long raw to a file if I had no choice:
1) create a gtt with a column of type blob
2) insert into the gtt the long raw column using the to_lob conversion function
3) you now have a lob!
4) open a binary file for writing using utl_file (binary mode was introduced in 10g)
4) use dbms_lob to read through the blob and write it in chunks to the file
You will have to do this row by row. It will be painfully excrutiatingly slow.
This is basically your only choice unless you have a OCI programmer to hand. In which case I would be getting them to write the C code to read the long raw column and write it to a file. This could then be compiled into a library and called as an external procedure from PL/SQL.
HTH
Chris -
Hi Everybody,
I am using Oracle 9i ver 9.1 & Developer 6. My requirement is to store documents in the database. For that I have created a Long RAW column in the table where I have to store that. On forms I have made an OLE Container whose OLE Class property is set to "Word.Document.8". When I run the form, everyting goes fine. I insert the record, with word documents, it saves. I cleared the form & when I query it gets back the document, ie I can open it by double clicking it. But, once I exit the screen, run it again & try to query, it fetches all other columns except the OLE container value. I mean when I query it after exiting once & running the screen again, it does not fetch that OLE container base table items value, which it displays if I query it, without exiting, ie, the time when I inserted the document in OLE container, saved it & cleared the screen.
Anyone having a work around pls, reply.
Thanks in Advance.
[email protected]Hi,
Yes the data is getting saved. As, when i clear the screen & then query again it displays the data. At SQL promp, when i qureied the table, it displays on a single "D" as the column values for all the rows, whether I had inserted any value for that row or not. I mean it was displaying "D" in all the rows, though, I have not inserted value in all rows in the Long Raw Column.
Rgds,
[email protected] -
How to extract payload data from SOA database schema using Java
I am trying to extract the payload data and output as XML text files using Java. Seems that is stored in SOA table XML_DOCUMENT. I am trying the following Java code to get started and it's not working as I would expect. I only get a few actual lines of output and, when I do, I only get the *<?xml version ... ?>* line.
I appreciate any advice to extract the payload data from the database. Ultimately I will want to include the composite instance ID in the SQL but for now I'm just using the code shown here:
OracleDataSource ods = new OracleDataSource();
ods.setURL("soa_db_connection_string");
ods.setUser("soa_db_user_id");
ods.setPassword("soa_db_password");
Connection conn = ods.getConnection();
String sql = "select document from xml_document where rownum < 10";
OraclePreparedStatement stmt = (OraclePreparedStatement)conn.prepareStatement(sql);
DBBinXMLMetadataProvider dbrep = BinXMLMetadataProviderFactory.createDBMetadataProvider();
dbrep.setConnectionPool(ods);
dbrep.associateDataConnection(conn);
OracleResultSet rset = (OracleResultSet)stmt.executeQuery();
XMLDOMImplementation domimpl = new XMLDOMImplementation();
BinXMLProcessor proc = BinXMLProcessorFactory.createProcessor(dbrep);
while (rset.next()) {
Blob blob = rset.getBlob("DOCUMENT");
BinXMLStream inpbin = proc.createBinXMLStream(blob);
BinXMLDecoder dec = inpbin.getDecoder();
InfosetReader xmlreader = dec.getReader();
XMLDocument doc = (XMLDocument)domimpl.createDocument(xmlreader);
doc.print(System.out);
}I found a method using a slight variation of the code I originally posted. Essentially you remove the DBBinXMLMetadataProvider dbrep portion. I believe, with this included, the XML being extracted is validated against the database (which is referenced as a "metadata provider"). Since the SOA schema doesn't seem to contain the information to validate the XML it returns as blank. If you don't include the dbrep portion then the XML is extracted as desired.
OracleDataSource ods = new OracleDataSource();
ods.setURL("soa_db_connection_string");
ods.setUser("soa_db_user_id");
ods.setPassword("soa_db_password");
Connection conn = ods.getConnection();
String sql = "select document from xml_document where rownum < 10";
OraclePreparedStatement stmt = (OraclePreparedStatement)conn.prepareStatement(sql);
OracleResultSet rset = (OracleResultSet)stmt.executeQuery();
XMLDOMImplementation domimpl = new XMLDOMImplementation();
BinXMLProcessor proc = BinXMLProcessorFactory.createProcessor();
while (rset.next()) {
BLOB blob = rset.getBLOB("DOCUMENT");
BinXMLStream inpbin = proc.createBinXMLStream(blob);
BinXMLDecoder dec = inpbin.getDecoder();
InfosetReader xmlreader = dec.getReader();
XMLDocument doc = (XMLDocument)domimpl.createDocument(xmlreader);
doc.print(System.out);
} -
Restrict the LONG RAW Column with less than 32760 bytes in the SELECT
When i am trying to access a LONG RAW Dataype wchich has characters greter than 32760 bytes i am getting this error.
Error -6502: ORA-06502: PL/SQL: numeric or value error
I came to know that PL/SQL will only be able to access the first 32760 bytes of a LONG RAW. If we try to fetch a LONG RAW from the database into PL/SQL variable which exceeds the 32760 byte limit then we encountered the above error.
Can anyone tell to avoid this error can we write a query to restrict the output to get only those records which has LONG RAW length less than 32760 bytes.
Since we canot use utl_raw.length() in the Select Statement, is there any function to restrict the the records for less than 32760 Bytes only for LONG RAW datatype, so that i will not get any records for more than 32760 bytes and we will not get this error.
REquest you to please help.Hi
we do not have an option of migrating the LONG RAW to BLOB or any kind of ALTER to the table.
We want to restrict the use of Records from the Table which has data for LONG RAW column less than 32760 bytes, so that we will not get the PL/SQL numberic Error
any function for LONG RAW that can be used in SQL like for varchar2 we can use
select length(NAME) < 100 from tb_emp+
i.e it will get records only which has NAME less than 100 characters. -
6i to 9i conversion OLE container stored in a LONG RAW column to BLOB
I need to automate the migration of data stored in a long raw column to a blob column. The objects were stored in the long raw column using an Oracle Forms 6i OLE container. There is also multiple object types stored in the column, ie (word, excel, images, but mostly pdf's). I have looked at the webutil package but cannot figure out how to read the long raw column since ole containers are obsolete in 9i. I have a lot of records that need migrating and need help.
Thanks,
J. Broome
[email protected]It doesn't appear that I am able to attach the PDF files. Can you supply your email (or I can supply mine) so I can send you the three files:
1.) A good PDF (manually extracted from our old application)
2.) Dump of the same PDF file (includes header/footer info)
3.) A partially fixed PDF file (but some of the pictures / pages are cut off - specifically pages 3,5,9,10,12,14)
The way that we have tried to fix the file (in example 3 above) is the following:
a.) Find the First Occurrence of "%PDF-"
b.) Find the Last Occurrence of "%%EOF"
c.) if the first "%PDF-" is found AND the last "%%EOF" is found, then
i.) Remove all data before the first %PDF-
ii.) Remove all data after the last %%EOF
Let me know if you need any other information.
Thanks,
Mike -
Extract data into the Oracle Database
Hello,
I have file in PDF format.
I need to extract data into the Oracle Database.
what should be my action ?
And how could I accomplish?
thanks
DNYou said:
Do you know ahead of time how many columns are in the file?
yes, It has 8 columns.
But each PDF have different total of columns. Right now I am working on one PDF file only.
e.g: page emp report has following values:
Salray History Report in PDF format
Page 1
Date 10-21-2005
LAST NAME SALARY COMMISSION
Russell 14000 .4
Partners 13500 .3
Errazuriz 12000 .3
Cambrault 11000 .3
Zlotkey 10500 .2
after converting it will be come as
Salray History Report in PDF format
Page 1
Date 10-21-2005
LAST NAME
SALARY
COMMISSION
Russell
Partners
Errazuriz
Cambrault
Zlotkey
14000
13500
12000
11000
.4
.3
.3
.3
End of Page 1
Date 10-21-2005
LAST NAME
SALARY
COMMISSION
DN -
Memory Leak with Oracle ODBC Driver for Long Raw columns
Oracle version : 8.1.7
Platform : Win2K
Oracle ODBC Driver version : 8.0.1.7.5.0.0
Hi,
I've got an Oracle database upgraded from
V8.0.5 to V8.1.7 which has a table having one long raw +
normal columns. I was able to observe distinct memory
leaks (approx 80K) when using ODBC interface calls (thro C++ code) that referenced a combination of normal & long raw columns in a select statement. However, this leak was not observed when only normal columns were present in the
select statement. Is there any known restriction for using
long raw columns with other columns? Or do long raw columns have a known memory leak problem thro ODBC?
Thanks!
Regards
SanchayanDid you ever get an answer on this issue?
Thanks in advance -
Column length of a LONG RAW column
How to find out the column length of a LONG RAW column, to compute the average row size in Oracle 7.3.4
Thanks.The Member Feedback forum is for suggestions and feedback for OTN Developer Services. This forum is not monitored by Oracle support or product teams and so Oracle product and technology related questions will not be answered. We recommend that you post this thread to the Database - General forum. General Database Discussions
OTN -
SQL Server Long Text column to Oracle CLOB via DB Link
Does anyone know how to load a SQL Server Long Text column into an Oracle CLOB column using DB Link? When I try to Select from SQL Server table into Oracle table, I receive the error "ORA-00997: illegal use of LONG datatype".
Thanks,
SusanHi,
This is a known restriction involving long columns -
(1) LONG datatype not supported with use of DBLINK when insert or update involves a select statement
(2) LONG datatype cannot be used in a WHERE clause, in INSERT into ... SELECT ... FROM
constructs, and in snapshots.
The workround is to use a PL/SQL procedure or try the SQLPLUS COPY command.
If you have access to My Oracle Support then review these notes -
Cannot Move A Long From non Oracle database Ora-00997: Illegal Use Of Long Datatype (Doc ID 1246594.1)
How To Workaround Error: Ora-00997: Illegal Use Of Long Datatype (Doc ID 361716.1)
Regards,
Mike -
How to differentiate picture formats in LONG RAW column?
Hi,
I have a table with a long raw column that contains pictures. I would like to know for each row if the picture in the long raw column is in JPEG, TIFF, BMP, etc.
Does somebody have an idea on how to do this?
Thanks!
Matt1) You really shouldn't be using LONG or LONG RAW data types any longer. You should at least be using BLOB data types here.
2) When you designed the schema, there should have been columns (or other tables) to store metadata about the file, including the type of image a row stores.
3) Lacking any of this, you could write a program that fetches the data and determines whether it is a valid JPEG, then checks to see if it is a valid TIFF, etc. until it happens upon a file format that appears to work. Obviously, though, that is a relatively costly exercise. If that's what you're forced to do, I'd strongly encourage you to store that information in a (potentially new) column in the database so you only have to do it once.
Justin -
How to load image in Long Raw column?
Dear all,
I need to upload a jpg image to a Long Raw column in one of our tables. Is there a way or utility so that I can do this thru a PL/SQL code? Please help.
Regards,
AmitYou must not be using LONG data type. It has been deprecated. You must be using BLOB. Here is an extract from AskTom.com on how to load a file into BLOB field.
create table demo
( id int primary key,
theBlob blob
create or replace directory my_files as '/export/home/tkyte/public_html';
declare
l_blob blob;
l_bfile bfile;
begin
insert into demo values ( 1, empty_blob() )
returning theBlob into l_blob;
l_bfile := bfilename( 'MY_FILES', 'aria.gif' );
dbms_lob.fileopen( l_bfile );
dbms_lob.loadfromfile( l_blob, l_bfile,
dbms_lob.getlength( l_bfile ) );
dbms_lob.fileclose( l_bfile );
end;
/Below is the link for the same.
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:232814159006 -
Load image file into a LONG RAW column via SQL*Loader
Does anyone know how to load a image file into a LONG RAW column via SQL*Loader?
Thanks
-Hsing-Hua-Are you trying to import the image on the client into Oracle lite, or from the server end into the main oracle database for download to the client?
On our system images are loaded into the the oracle lite database (10g R1 at the moment) on the client (DELL X50 PDA's) into a BLOB (Not LONG RAW) column using Java (relatively standard functionality in Java) as this is what our application software is written in.
From the server end, we do not at the moment load images as such, but we do load the application software into the database for deployment of new versions to the clients (the DMC/DMS updates we have found very unreliable), and the technique should be the same for images. Again the file is imported into a BLOB column.
NOTE a column defined as BLOB on the main Oracle database appears as a LONG VARBINARY on the client Oracle lite database, but the synchronisation process handles the conversion with no problem.
To import into a BLOB column on the server try the following
1) you will need to create a DIRECTORY (CREATE DIRECTORY command) within the database, pointing at a directory on the database server (or accessible from it). This is needed for the file location.
CREATE OR REPLACE DIRECTORY PDA_FILE_UPLOAD AS '/pdaapps/jar/'
NOTE create directory needs to be run as SYSTEM
2) define your table to hold the image and other data. Our tables is
SQL> desc pda_applications
Name Null? Type
ID NOT NULL NUMBER(12)
PDAAT_CODE NOT NULL VARCHAR2(10)
VERSION NOT NULL NUMBER(5,2)
PART_NO NOT NULL NUMBER(3)
FILE_OBJECT BLOB
DEPLOY_APPLICATION_YN NOT NULL VARCHAR2(1)
3) copy the image (or in our case a .jar file) to the database server directory specified in step 1
4) the actual import is done using a DBMB_LOB procedure
PROCEDURE pr_load_file
Module Name : pr_load_file
Description : Main call. Create a new pda_applications record, and import the specified file into it
Version History:
Vers. Author Date Reason
1.0 G Wilkinson 03/02/2006 Initial Version.
(PA_VERSION IN NUMBER
,PA_FILENAME IN VARCHAR2
,PA_PDAAT_CODE IN VARCHAR2
,PA_PART_NO IN NUMBER DEFAULT 1
,PA_DEPLOY IN VARCHAR2 DEFAULT 'Y')
IS
l_FileLocator BFILE;
l_blobLocator BLOB;
l_seq NUMBER;
l_location VARCHAR2(20);
no_params EXCEPTION;
call_fail EXCEPTION;
BEGIN
-- Throw error if required details not present
IF pa_version IS NULL
OR pa_filename IS NULL
OR pa_pdaat_code IS NULL THEN
RAISE no_params;
END IF;
-- Initialize the BLOB locator for writing. Note that we have
-- to import a blob into a table as part of a SELECT FOR UPDATE. This locks the row,
-- and is a requirement for LOADFROMFILE.
SELECT pdaa_id_seq.nextval
INTO l_seq
FROM dual;
-- First create the application record (file is imported by update, not insert
INSERT INTO pda_applications
(ID,PDAAT_CODE,VERSION,PART_NO,FILE_OBJECT,DEPLOY_APPLICATION_YN)
VALUES (l_seq,pa_pdaat_code,pa_version,pa_part_no,EMPTY_BLOB(),pa_deploy);
-- Lock record for update to import the file
SELECT file_object INTO l_blobLocator
FROM pda_applications
WHERE id=l_seq
FOR UPDATE;
-- Initialize the BFILE locator for reading.
l_FileLocator := BFILENAME('PDA_FILE_UPLOAD', pa_filename);
DBMS_LOB.FILEOPEN(l_FileLocator, DBMS_LOB.FILE_READONLY);
-- Load the entire file into the character LOB.
-- This is necessary so that we have the data in
-- character rather than RAW variables.
DBMS_LOB.LOADFROMFILE(l_blobLocator, l_FileLocator
,DBMS_LOB.GETLENGTH(l_FileLocator)
,src_offset => 1);
-- Clean up.
DBMS_LOB.FILECLOSE(l_FileLocator);
-- Create download records for each user associated with the application for sending to the PDA's
-- to install the software
IF pa_deploy = 'Y' then
IF fn_deploy (pa_pdaa_id => l_seq
,pa_pdaat_code => pa_pdaat_code) != 'SUCCESS' THEN
RAISE call_fail;
END IF;
END IF;
EXCEPTION
WHEN no_params THEN
pkg_appm.pr_log_message( pa_mdl_name => g_module_name
, pa_mdl_version => fn_get_body_version
, pa_error_code => SQLCODE
, pa_location => l_location
, pa_text => 'Missing parameters'
, pa_severity => 'E'
WHEN OTHERS THEN
DBMS_LOB.FILECLOSE(l_FileLocator);
pkg_appm.pr_log_message( pa_mdl_name => g_module_name
, pa_mdl_version => fn_get_body_version
, pa_error_code => SQLCODE
, pa_location => l_location
, pa_text => SQLERRM
, pa_severity => 'E'
END pr_load_file;
I hope this may be of some help -
Database Column Type for Rich Text Editor
Hi,
I have a page item as Rich Text Editor. Now I want to store the data in tables in the same format as user entered in the page item.
What would be the database column type for that?
Thanks,
MehabubMehabub Sheikh wrote:
I have a page item as Rich Text Editor. Now I want to store the data in tables in the same format as user entered in the page item.
What would be the database column type for that?As usual, the answer is "It depends".
In this case it depends on the nature and size of the content. For content up to 4000 bytes in length, use VARCHAR2 or NVARCHAR2 (depending on the DB character set and globalization requirements), for content of longer length use CLOB or NCLOB (again depending on DB characterset and your globalization requirements).
Note the effect of DB character set on the number of characters you can store in a VARCHAR2 or NVARCHAR2 column, and the overhead of HTML tags generated by formatting in the Rich Text Editor. -
PHP MaxDB - update on long text column
Hi!
I'm getting problem with update statement on long text column via PHP MaxDB.
As far as there is no example on maxdb_stmt_send_long_data in php documentation, i'm completely stuck with this.
My table definition:
CREATE TABLE "ADMIN"."PRESS"
"ID" Integer NOT NULL,
"R_PUBLICATION" Varchar (100) ASCII,
"NUM" Integer,
"R_DATE" Date,
"R_TITLE" Varchar (100) ASCII,
"R_B_TEXT" Varchar (1000) ASCII,
"ID_TYPE" Integer,
"R_FILENAME" Varchar (500) ASCII,
"R_TEXT" Long ASCII,
PRIMARY KEY("ID")
PHP code:
$stmt = maxdb_prepare($db, "update press set r_publication=?, num=?, r_title=?, r_text=?, r_b_text=?, id_type=?, r_date=?, r_filename=? where id=?");
maxdb_stmt_bind_param($stmt, 'sisbsissi', $r_publication, $num, $r_title, $r_text, $r_b_text, $id_type, $str_date, $r_filename, $id_f);
maxdb_stmt_execute($stmt);
maxdb_stmt_send_long_data ($stmt, 3, $r_text);
maxdb_stmt_close_long_data($stmt, 3);
maxdb_stmt_close($stmt);
After calling the above php-script I get this warning:
Warning: maxdb_stmt_execute(): Wrong parameter type. Expected: long.
Has anyone an example on how to update (or insert) LONG string value via the php MaxDB extension?
Thanks in advance.
Operating system: CentOS 5.3 Final
PHP: 5.2.10
Apache: 1.3.41
MaxDB: 7.7 Linux 32 Bit
PHP MaxDb Extension: 7.6.00.38We using the procedure to insert and update. Procedure will called to update or insert only one record at a time from XX databse to YY database.
We are not using SQL * PLUS for this operation.
Thanks
Ram
Maybe you are looking for
-
Error when running Web Service Proxy from JDev (running publisher report)
Hello. I would like to call publisher report from forms, so i was using this instructions: http://www.oracle.com/technology/products/xml-publisher/docs/Forms_BIP_v21.pdf When i test my Web Service Proxy, i get this warning: WARNING: The received SOAP
-
AGGHHHH! I have just finished hours of work, making an album on iphoto. I finally finished placing about the 300th photo, all cropped, edited, etc etc. I wanted to check that all the photos were in, so I hit the "clear placed photos" button, thinking
-
Is it possible to change the requirement date of a component?
Hello Gurus, When a non stock material is defined as a component of service order a requirement date is automatically determinded (RESBD-BDTER) on the current date. Does someone knows if one can be able to influence this field? It means that I would
-
Live paint changes my shapes?
I have a star that I applied the pucker and bloat effect to and I made it into a live paint group via the object > live paint > make and it changed it into an elliptical shape. Why is this? I am using cs5. Thank you.
-
Java.io.InvalidClassException:local class incompatible?
hello everyone: I deploy a J2EE application called A in a weblogic domain called A, it can run correctly; then I deploy another J2EE application called B, which is a new edition of A, in another weblogic domain called B, it can also run correctly; Th