Difference between revisions of "Microsoft Access OLE DB"
Line 33: | Line 33: | ||
<syntaxhighlight lang="sql" highlight="3"> | <syntaxhighlight lang="sql" highlight="3"> | ||
SELECT * | SELECT * | ||
− | FROM [ | + | FROM [...] |
IN 'c:\source.xls'[EXCEL 8.0;]; | IN 'c:\source.xls'[EXCEL 8.0;]; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 69: | Line 69: | ||
=== Optional Parameters === | === Optional Parameters === | ||
− | + | ;HDR | |
− | + | :The header parameter specifies, whether the first row should be interpreted as column headers. | |
+ | :Possible values: HDR=yes, HDR=no | ||
+ | |||
+ | ;IMEX | ||
+ | :In order to identify the content of a column usually the first eight rows are scanned for values and the rest of the column is identified accordingly. | ||
+ | :Unfortunately this behaviour often leads to misinterpretation and error values. | ||
+ | :Setting this parameter to ''0'' suppresses the value type interpretation and enforces the data type "text" for all columns. | ||
+ | :Possible values: IMEX=0 | ||
+ | |||
== Text file == | == Text file == | ||
− | <syntaxhighlight lang=sql> | + | When dealing with text files the folder of the file is interpreted as database |
+ | and the text file itself as table source. | ||
+ | |||
+ | It is possible—and highly recommended—to specify the content | ||
+ | of the text file by creating a ''schema.ini'' with the specification details. | ||
+ | |||
+ | <syntaxhighlight lang="sql" highlight="2-3"> | ||
SELECT * | SELECT * | ||
FROM source.csv | FROM source.csv | ||
Line 80: | Line 94: | ||
=== Optional Parameters === | === Optional Parameters === | ||
− | + | ;HDR | |
+ | :The header parameter specifies, whether the first row should be interpreted as column headers. | ||
+ | :Possible values: HDR=yes, HDR=no | ||
Revision as of 01:20, 16 April 2012
General
It is possible to access some resources without writing any line of code. All you need is to write a query which makes use of ISAM OLEDB.
For further reading:
Microsoft Access
This allows you to easily refer to other database tables and queries without the need to create a linked table.
The database can be specified by the use of the IN clause
SELECT *
FROM tblTable
IN 'c:\source.mdb'
or by applying square brackets around the database path and prefixing the referenced table with it
SELECT *
FROM [c:\source.mdb].tblTable
Microsoft Excel
Every worksheet or (named) range is considered as table when accessing Microsoft Excel files.
SELECT *
FROM [...]
IN 'c:\source.xls'[EXCEL 8.0;];
Named Range
Accessing data by naming ranges allows the developer to specify exactly what should be imported. By this—and the optional parameters—it should be easy to retrieve exactly the desired data and nothing else.
SELECT *
FROM [NamedRange]
IN 'c:\source.xls'[EXCEL 8.0;];
Worksheet
The selection of worksheets is usually not recommended, as the selection will also contain empty cells and maybe other unwanted content.
SELECT *
FROM [Worksheet$]
IN 'c:\source.xls'[EXCEL 8.0;];
Reference
In rare cases it is necessary to retrieve the content of a certain cell range.
SELECT *
FROM [Worksheet$A1:B2]
IN 'c:\source.xls'[EXCEL 8.0;];
Optional Parameters
- HDR
- The header parameter specifies, whether the first row should be interpreted as column headers.
- Possible values: HDR=yes, HDR=no
- IMEX
- In order to identify the content of a column usually the first eight rows are scanned for values and the rest of the column is identified accordingly.
- Unfortunately this behaviour often leads to misinterpretation and error values.
- Setting this parameter to 0 suppresses the value type interpretation and enforces the data type "text" for all columns.
- Possible values: IMEX=0
Text file
When dealing with text files the folder of the file is interpreted as database and the text file itself as table source.
It is possible—and highly recommended—to specify the content of the text file by creating a schema.ini with the specification details.
SELECT *
FROM source.csv
IN 'c:\'[TEXT;];
Optional Parameters
- HDR
- The header parameter specifies, whether the first row should be interpreted as column headers.
- Possible values: HDR=yes, HDR=no
HTML
While this works theoretically in general, there are many problems with selecting data from web sites. These HTML specifica make it impracticable to work with HTML tables this way.
Exchange
It is possible to query Exchange / Outlook folders and address books as follows:
SELECT *
FROM Inbox
IN 'c:\temp\'[Exchange 4.0;MAPILEVEL=Account - Paul Stevens|;TABLETYPE=0;];
where Account - Paul Stevens has to be replaced by the exact name of the Inbox followed by the pipe (|). This works for Contacts, Calendar and other folders too.
ODBC
ODBC is considered as deprecated technology and does nothing which OLEDB is not capable of, but for the sake of backwards compatibility it is possible to use ODBC connections too.
Optional Parameters
The optional parameters can be appended to the required part in the brackets. Example:
[EXCEL 8.0;HDR=yes;IMEX=0;]
HDR
Does the data source have headings?
- Values: yes|no
- Default: yes
IMEX
Should the data be imported "as is" in text format or should windows try to guess the value type of each column?
- Values: 0|1
- Default: 1 (guess)