- |
Whether it be reading CSV files from products like Microsoft Excel, or creating data files for use with Sybase BCP or Oracle SQL*Loader, Uniface projects inevitably require a solution to be found.
March Hare have taken advantage of the Uniface Database Connector API to provide the simplest most efffective way of transferring delimited text files (comma separated files) to and from Uniface.
What no other solution offers
Since our solution is built as a Uniface driver, it is supported
on all current, past and future versions of Uniface. It also means
that you have access to the full functionality of a database. Read
records based on a selection profile (eg: read u_where (field1="A")
).
Records can be read and/or written with the same ease as you read and write records from any other database with Uniface. Customising the UD8/CSV driver to read your format of file is as simple as setting USYS$UD8_PARAMS in your assignment file. Some of the many formats supported:
Delimited text (including comma separated, tab separated etc)
Dynamically choose the name of the file
Whilst UD8/CSV is a database driver, it does some things that no other Uniface drivers do. In Uniface you define a logical enity name, which is mapped to a physical table name at run time, the name of which comes va the settings in the assignment file.
Unfortunately you cannot alter this mapping once the session has started. Since being able to name the file dynamically is fairly important in CSV file processing, March Hare found a way to simply work around this
Before the table is opened (first read or write after a logon operation with the proc statement open), the developer can use the sql proc statement to send the driver mapping information. For detailed examples please see the article Using UD8/CSV.
This feature can even be used with other drivers like Oracle and DBase III. See the article Dynamically assigning physical tablenames in Oracle for more information.
Why use BCP and SQL*Loader
Most databases have a 'fast' loader supplied by the manufactuerer. These 'loaders' are designed to take advantage of inside knowledge of the database, to perform bulk loads. No application can match their ability to load data into the database.
By comparison, Uniface's technique is exteremely generic and works for all databases. However it can be quite slow, and exteremely slow when compared with tools like BCP (Sybase and SQL Server) or SQL*Loader (Oracle).
Using the UD8/CSV driver you can write delimited text files for use with these tools, and then take advantage of high speeds loads. This is ideal for large amounts of application data and/or transferring the Uniface repository.
Features comparison
Several other 'text file' drivers are available for Uniface, but this side by side comparison makes it easy to see how UD8/CSV driver offers much more features, and value:
Feature
|
Driver
|
||
|
CSV/UD8
|
TXT
|
SEQ
|
Uniface
Versions Supoprted
|
6.1.dt
and higher
|
7.x.x
|
7.x.x
|
For
Platforms
|
All
|
All
|
All
|
Mnemonic
|
UD8
|
TXT
|
SEQ
|
Format of file | Delimited fields | Fixed length fields | Fixed length fields |
Read & Write simultaneously | YES | NO | NO |
Field level | YES | NO | NO |
Definable packing codes | YES | NO | NO |
Binary Data Allowed | YES | NO | NO |
Primary Key checking | Optional | NO | NO |
Table/File creation on fly | YES | YES | YES |
Maximum size of record | Unlimited¹ | 8192 bytes | 8192 bytes |
Lock support | Whole file | NO | NO |
Retrieve profiles supported | YES | NO | NO |
SQL & SQL workbench | NO | NO | NO |
Update records from within Uniface | YES | NO | NO |
Delete records from within Uniface | YES | NO | NO |
Source code available | Included | NO | NO |
Can encrypt data to produce test data from production data | YES | NO | NO |
Dynamically set filename for an entity. | YES | NO | NO |
Dynamically set driver options. | YES | NO | NO |
Dynamically set physical tablename for an entity stored in another database. | YES | NO | NO |
Artificially set $dbocc() to true for an empty occurrence. | YES | NO | NO |
Ignore first row / heading. | YES | NO | NO |
Note ¹ : The UD8/CSV driver can store Unlimited size records, within the limitations that Uniface supplied, using base & overflow tables. For a solution to reading CSV files that are larger that 8Kbytes, please see our UD6/CMtool Driver. This driver can read CSV files of any size (please see the explanations in the help file for USYS$UD6_PARAMS=convert csv).
- UD8/CSV driver is available for all Uniface supported platforms
$Revision: 1.8 $ $Date: 2011/02/28 02:56:33 $ | [go to top] |