pentaho/pentaho-kettle · error · KettleException
OraBulkLoaderMeta.Exception.TableNotFound
Error message
OraBulkLoaderMeta.Exception.TableNotFound
What it means
Thrown by OraBulkLoaderMeta.getTableFields() when validating the target table: the step opens a database connection, checks whether the (schema-qualified) table exists via db.checkTableExists(), and throws this KettleException if it does not. The message text comes from the messages bundle key OraBulkLoaderMeta.Exception.TableNotFound.
Solutions
- Verify the table exists with the exact name/schema in the target Oracle database (SELECT * FROM all_tables WHERE table_name = ...)
- Correct the schema name and table name in the OraBulkLoader dialog, remembering Oracle's default uppercase identifier convention
- Confirm the database connection points to the intended host/service and that the user can see the table
- Create the table first or grant SELECT privileges on it to the connection user
Example fix
// before realTableName = "ORDERS_NEW"; // table not created yet // after: create it, or point to the existing table realTableName = "ORDERS";
Defensive patterns
Strategy: validation
Validate before calling
// Verify table existence before running the transformation:
Database db = new Database( loggingObject, databaseMeta );
db.connect();
String qualified = databaseMeta.getQuotedSchemaTableCombination( schema, table );
if ( !db.checkTableExists( qualified ) ) {
throw new IllegalStateException( "Target table missing: " + qualified );
}
db.disconnect(); Try / catch
try { fields = meta.getTableFields(); } catch ( KettleException e ) { log.error( "Table lookup failed, check schema/table: " + e.getMessage(), e ); } Prevention
- Verify table/schema names against ALL_TABLES in the target environment
- Remember Oracle's uppercase default identifiers
- Confirm environment-specific connections before deployment
- Run 'Get fields' in the dialog to test resolution at design time
When it happens
Trigger: Calling getTableFields (used when the 'Get fields' button resolves target columns) with a tableName that, qualified with realSchemaName, does not exist in the database referenced by databaseMeta.
Common situations: Typo in the target table name or schema name; the table was never created; connecting to the wrong database/schema/environment; insufficient privileges so checkTableExists returns false; case-sensitivity issues with Oracle uppercase identifiers.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- InsertUpdateMeta.Exception.TableNotFound
- OraBulkLoaderMeta.Exception.ErrorGettingFields
- ERROR0002
- GetSequenceMeta.Exception.UnableToReadStepInfo
- GetSequenceMeta.Exception.UnableToSaveStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/45b6ca6274a05b3b.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/oracle-bulk-loader/impl/src/main/java/org/pentaho/di/trans/steps/orabulkloader/OraBulkLoaderMeta.java:876
}
public RowMetaInterface getRequiredFields( VariableSpace space ) throws KettleException {
String realTableName = space.environmentSubstitute( tableName );
String realSchemaName = space.environmentSubstitute( schemaName );
if ( databaseMeta != null ) {
Database db = new Database( loggingObject, databaseMeta );
try {
db.connect();
if ( !Utils.isEmpty( realTableName ) ) {
String schemaTable = databaseMeta.getQuotedSchemaTableCombination( realSchemaName, realTableName );
// Check if this table exists...
if ( db.checkTableExists( schemaTable ) ) {
return db.getTableFields( schemaTable );
} else {
throw new KettleException( BaseMessages.getString( PKG, "OraBulkLoaderMeta.Exception.TableNotFound" ) );
}
} else {
throw new KettleException( BaseMessages.getString( PKG, "OraBulkLoaderMeta.Exception.TableNotSpecified" ) );
}
} catch ( Exception e ) {
throw new KettleException(
BaseMessages.getString( PKG, "OraBulkLoaderMeta.Exception.ErrorGettingFields" ), e );
} finally {
db.close();
}
} else {
throw new KettleException( BaseMessages.getString( PKG, "OraBulkLoaderMeta.Exception.ConnectionNotDefined" ) );
}
}
/**
* @return the schemaNameView on GitHub (pinned to f3058517a1)