Getting "Table or View does not exist" with Oracle Blob
I am using the version 5.3.1 of Enterprise Data Integration. My job simply moves data from one Oracle 11g database to another Oracle 11g database based upon a date comparison. Many of the rows fail with "Table or view does not exist", but not all rows are failing. In Oracle, the field is defined as BLOB. In the Talend schema it is defined as Object with a length of 32767. In the Java code I see this declaration which appears incorrect.
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(super.toString());
sb.append("");
return sb.toString();
}
Is it possible that this is the cause of the issue? Obviously the table exists if it reads all data and writes some data. The amount of error messages is the same as the amount of records not written.
Thank you
The code you post here is only a toString method and has nothing to do with your problem.
I work also with BLOB fields and Oracle and it works well. If a table is missing in Talend it is usually a problem of the configuration or the user rights. It is also a bit a miracle why do you get a message table or view does not exists for rows? This error will be raised when the select statement will be fired against the database and not while the result set will be processed.
It is a good idea to show us your job design.
It is a simple job. I have attached a screenshot. It drops and recreates the destination table. Out of 15,550,032 records read it stored 14,574,500. It is not an issue of whether the source table exists or a rights issue because it did successfully process over 14M records. I get this error message once for every failed record. If you notice the numbers in the picture, it read and processed the full amount. It just could not save all of the records.
I did not get the error with tLogRow. I have simplified the job and removed the tFlowMeter. It is now just a simple database extract and database insert. Same results
I am not sure if it is possible to transfer BLOBs only with the transfer of the Object typed value. If you want read the context of an BLOB usually you have to read the content with an Inputstream and vise versa if you want write a BLOB you have to use an Outputstream. I would bet this will not work by only transfering the BLOBs because a BLOB is simply pointer.
I have attached the schema definitions for these objects. I have also tested this table without the blob. It ran fine without the blob column being included. I tried adding the blob column to the end of the table and it still failed. So, the issue is definitely with the blob.
Here is my Java version info:
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
If I change the action to Delete I get no error messages, but of course I don't get any data.
If I change the action to Insert I get only one Table or View does not exist message and it is black instead of red.
If I change the action to Insert or update then I get one Table or View does not exist message per row which failed, the error message is red in this case.
I have tried various combinations of Action on Table to no avail.