Reader Directives
The suffixes listed are prefixed by the current <ReaderKeyword> in a mapping file. By default, the <ReaderKeyword> for the Microsoft Access reader is MDB_ADO.
DATASET
Required/Optional: Required
This is the file name of the Microsoft Access Database.
Example:
MDB_ADO_DATASET c:/data/citySource.mdb
Workbench Parameter: Source Microsoft Access Database File(s)
PASSWORD
Required/Optional: Optional
The password used to access the database. It can be omitted for Access databases without password protection.
Please note that databases associated with a Microsoft Access workgroup are not supported.
Example:
MDB_ADO_PASSWORD moneypenny
Workbench Parameter: Password
DEF
Required/Optional: Required
The syntax of the definition is:
MDB_ADO_DEF <tableName> \ [mdb_where_clause<whereClause>] \ [<fieldName><fieldType>] +
or
MDB_ADO_DEF <queryName> \ [mdb_sql_statement <sqlQuery>] \
The <tableName> must match the name of an existing Microsoft Access table in the database. This will be used as the feature type of all the features read from the table. The exception to this rule is when using the mdb_sql_statement directive. In this case, the DEF name may be any valid alphabetic identifier; it does not have to be an existing table name – rather, it is an identifier for the custom SQL query. The feature type of all the features returned from the SQL query are given the query name.
The <fieldType> of each field must be given, but it is not verified against the database definition for the field. In effect, it is ignored.
The definition allows specification of separate search parameters for each table. If any of the per table configuration parameters are given, they will override, for that table, whatever global values have been specified by the reader directives such as the WHERE_CLAUSE. If any of these parameters is not specified, the global values will be used.
The following table summarizes the definition line configuration parameters:
Parameter |
Contents |
mdb_where_clause |
This specifies the SQL WHERE clause applied to the attributes of the layer’s features to limit the set of features returned. If this is not specified, then all the rows are returned. This directive will be ignored if the mdb_sql_statement is present. |
mdb_sql_statement |
This specifies an SQL SELECT query to be used as the source for the results. If this is specified, the Microsoft Access reader will execute the query, and use the resulting rows as the features instead of reading from the table <queryName>. All returned features will have a feature type of <queryName>, and attributes for all columns selected by the query. The mdb_where_clause is ignored if mdb_sql_statement is supplied. This form allows the results of complex joins to be returned to FME. |
If no <whereClause> is specified, all rows in the table will be read and returned as individual features. If a <whereClause> is specified, only those rows that are selected by the clause will be read. Note that the <whereClause> does not include the word WHERE.
The Microsoft Access reader allows one to use the mdb_sql_statement parameter to specify an arbitrary SQL SELECT query on the DEF line. If this is specified, FME will execute the query, and use each row of data returned from the query to define at least one feature. Each of these features will be given the feature type named in the DEF line, and will contain attributes for every column returned by the SELECT. In this case, all DEF line parameters regarding a WHERE clause or spatial querying are ignored, as it is possible to embed this information directly in the text of the <sqlQuery>.
In the following example, the all records whose ID is less than 5 will be read from the supplier table:
MDB_ADO_DEF supplier \ mdb_where_clause "id < 5" \ ID integer \ NAME char(100) \ CITY char(50)
In this example, the results of joining the employee and city tables are returned. All attributes from the two tables will be present on each returned feature. The feature type will be set to complex.
MDB_ADO_DEF complex \ mdb_sql_statement \ "SELECT * FROM EMPLOYEE, CITY WHERE EMPLOYEE.CITY = CITY.NAME"
WHERE_CLAUSE
Required/Optional
Optional
This optional specification is used to limit the rows read by the reader from each table. If a given table has no mdb_where_clause or mdb_sql_statement specified in its DEF line, the global <ReaderKeyword>_WHERE_CLAUSE value, if present, will be applied as the WHERE specifier of the query used to generate the results. If a table’s DEF line does contain its own mdb_where_clauseorIDs
Required/Optional: Optional
This optional specification is used to limit the available and defined database tables that will be read. If no IDs are specified, then all tables are read. The syntax of the IDs directive is:
MDB_ADO_IDs <featureType1> \ <featureType2> … \ <featureTypeN>
The feature types must match those used in DEF lines.
The example below selects only the HISTORY table for input during a translation:
MDB_ADO_IDs HISTORY
Workbench Parameter: Feature Types to Read
READ_CACHE_SIZE
Required/Optional: Optional
This directive controls how the reader retrieves rows from the database. This must be a numeric value which must be greater than 0.
The READ_CACHE_SIZE is used to determine the number of rows that are retrieved at one time into local memory from the data source. For example, if the READ_CACHE_SIZE is set to 10, after the reader is opened, the reader will read 10 rows into local memory. As features are processed by the FME, the reader returns the data from the local memory buffer. As soon as you move past the last row available in local memory, the reader will retrieve the next 10 rows from the data source.
This directive affects the performance of the reader, and will result in significantly degraded performance if incorrectly set. The optimum value of this directive depends primarily on the characteristics of individual records and the transport between the database and the client machine. It is less affected by the quantity of rows that are to be retrieved.
By default, the READ_CACHE_SIZE is set to 10. This value has been determined to be the optimal value for average datasets.
Workbench Parameter: Number of Records to Fetch At A Time
The syntax for this clause is:
MDB_ADO_WHERE_CLAUSE <whereClause>
Note: The <whereClause> does not include the word “WHERE.”
The example below selects only the features whose lengths are more than 2000:
MDB_ADO_WHERE_CLAUSE LENGTH > 2000
Workbench Parameter
Where Clause
RETRIEVE_ALL_SCHEMAS
This parameter is applicable only when generating a mapping file, generating a workspace, or when retrieving schemas in an FME Objects application.
When set to yes, schemas for all of the tables and feature classes in the database are returned.
When set to no (or missing), and if RETRIEVE_ALL_TABLE_NAMES
is similarly set to no (or missing), only schemas requested by the IDs parameter are returned.
Required/Optional
Optional
Values
YES | NO (default)
NO: The reader will return the schemas for the feature types specified in the IDs. If no features are specified in IDs, then:
- for Enterprise Geodatabases, FME will not return any schema features;
- for Personal and File Geodatabases, FME returns the schema features for all the tables.
If this value is not specified, then it is assumed to be No.
YES: Indicates to the reader to return all the schemas of the tables in the database.
Mapping File Syntax
Not applicable.
FME Objects applications would include RETRIEVE_ALL_SCHEMAS
followed by “YES” in the parameters array passed to IFMEUniversalReader::open()
.
Workbench Parameter
Not applicable
RETRIEVE_ALL_TABLE_NAMES
This parameter is only applicable when generating a mapping file, generating a workspace or when retrieving schemas in an FME Objects application.
When set to yes, and if RETRIEVE_ALL_SCHEMAS
is set to no (or missing), names for all of the tables and feature classes in the database are returned. When set to no (or missing), and if RETRIEVE_ALL_SCHEMAS
is similarly set to no (or missing), the schemas requested by the IDs directive are returned.
Note: If RETRIEVE_ALL_SCHEMAS is also set to Yes, then RETRIEVE_ALL_SCHEMAS takes precedence.
Required/Optional
Optional
Values
YES | NO (default)
Mapping File Syntax
Not applicable.
FME Objects applications would include RETRIEVE_ALL_TABLE_NAMES
followed by “YES” in the parameters array passed to IFMEUniversalReader::open()
.
Workbench Parameter
Not applicable (used when you browse a Table List)
EXPOSED_ATTRS
This directive allows the selection of format attributes to be explicitly added to the reader feature type.
This is similar to exposing format attributes on a reader feature type once it has been generated; however, it is even more powerful because it enables schema-driven applications other than Workbench to access and leverage these attributes as if they were explicitly on the schema as user attributes.
The result of picking a list of attributes is a comma-separated list of attribute names and types that will be added to the schema features. Currently all reader feature types will receive the same set of additional schema attributes for a given instance of the reader.
Required/Optional
Optional
Mapping File Syntax
Not applicable.
While it is possible for FME Objects applications to invoke this directive, the required format is not documented.
This directive is intended for use in our GUI applications (for example, Workbench) only.
Workbench Parameter
Additional Attributes to Expose