Writing a loader program
You can write a program to load time series data by using time series SQL routines.
Before you begin
- An existing table with a TimeSeries column and a primary key. The name of the table and the name of the TimeSeries column must not contain uppercase letters.
- A container that is associated with the TimeSeries column.
- Data that consists of primary key values and time-based data. The data can have the form of a buffer, a file, JSON documents, a ROW data type that is compatible with the TimeSeries data type, or an SQL query to extract the data from the source database.
- The data must be compatible with HCL OneDB™ data types.
About this task
A loader program creates a loader session. A loader session loads data into a specific TimeSeries column. You must use separate loader sessions for every TimeSeries column. Opening a loader session takes time. Leave a session open instead of repeatedly opening and closing the session.
Within a loader session, you can open multiple database sessions so that you can load data in parallel. You can view active loader sessions by running the TSL_ActiveHandles function.
Procedure
Results
To write a loader program that uses multiple database sessions:
- Initialize a global context and open a database session by running the TSL_Init function.
- Open additional database sessions by running the TSL_Attach function.
- Determine how to distribute the data among database sessions by
running the TSL_GetKeyContainer function to find
into which container each primary key value belongs.
Loading is faster if each database session loads data into a different container.
- Within the context of each database session, run the TSL_Put, TSL_PutJSON, TSL_PutRow, or TLS_PutSQL function and the TSL_FlushAll or TSL_Commit function to load and save data.
- Within the context of each database session, monitor the progress of loaded and saved data by running the TSL_GetLogMessage function.
- If necessary, change the logging mode of all database sessions by running the TSL_SetLogMode function.
- Within the context of each database session, close the database session by running the TSL_SessionClose function.
- Remove the global context and shut down the loader by running the TSL_Shutdown procedure.
Examples
The following loader session uses one database session to load data into the ts_data table in the stores_demo database:
EXECUTE PROCEDURE ifx_allow_newline ('t');
EXECUTE FUNCTION TSL_Init ('ts_data','raw_reads',
3,4, NULL, '%Y-%m-%d %H:%M:%S',
'/tmp/rejects.log',NULL);
EXECUTE FUNCTION TSL_Put ('ts_data|raw_reads',
'4727354321000111|KWH|P|2010-11-10 00:00:00.00000|0.092|
4727354321000111|KWH|P|2010-11-10 00:15:00.00000|0.084|
4727354321000111|KWH|P|2010-11-10 00:30:00.00000|0.09|
4727354321000111|KWH|P|2010-11-10 00:45:00.00000|0.085|
4727354321000111|KWH|P|2010-11-10 01:00:00.00000|0.088|
4727354321000111|KWH|P|2010-11-10 01:15:00.00000|0.088|
4727354321000111|KWH|P|2010-11-10 01:30:00.00000|0.085|
4727354321000111|KWH|P|2010-11-10 01:45:00.00000|0.091|
4727354321046021|KWH|P|2010-11-10 00:00:00.00000|0.041|
4727354321046021|KWH|P|2010-11-10 00:15:00.00000|0.041|
4727354321046021|KWH|P|2010-11-10 00:30:00.00000|0.04|
4727354321046021|KWH|P|2010-11-10 00:45:00.00000|0.041|
4727354321046021|KWH|P|2010-11-10 01:00:00.00000|0.041|
4727354321046021|KWH|P|2010-11-10 01:15:00.00000|0.041|
4727354321046021|KWH|P|2010-11-10 01:30:00.00000|0.055|
4727354321046021|KWH|P|2010-11-10 01:45:00.00000|0.073|
4727354321046021|KWH|P|2010-11-10 02:00:00.00000|0.071|
4727354321046021|KWH|P|2010-11-10 02:15:00.00000|0.068|
4727354321046021|KWH|P|2010-11-10 02:30:00.00000|0.07|
');
EXECUTE FUNCTION TSL_Put ('ts_data|raw_reads',
'4727354321090954|KWH|P|2010-11-10 00:00:00.00000|0.026|
4727354321090954|KWH|P|2010-11-10 00:15:00.00000|0.035|
4727354321090954|KWH|P|2010-11-10 00:30:00.00000|0.062|
4727354321090954|KWH|P|2010-11-10 00:45:00.00000|0.092|
4727354321090954|KWH|P|2010-11-10 01:00:00.00000|0.016|
4727354321090954|KWH|P|2010-11-10 01:15:00.00000|0.043|
4727354321090954|KWH|P|2010-11-10 01:30:00.00000|0.038|
4727354321090954|KWH|P|2010-11-10 01:45:00.00000|0.037|
4727354321090954|KWH|P|2010-11-10 02:00:00.00000|0.034|
4727354321090954|KWH|P|2010-11-10 02:15:00.00000|0.023|
4727354321090954|KWH|P|2010-11-10 02:30:00.00000|0.03|
4727354321090954|KWH|P|2010-11-10 02:45:00.00000|0.05|
4727354321090954|KWH|P|2010-11-10 03:00:00.00000|0.048|
4727354321090954|KWH|P|2010-11-10 03:15:00.00000|0.047|
');
begin;
EXECUTE FUNCTION TSL_FlushAll ('ts_data|raw_reads');
commit;
EXECUTE FUNCTION TSL_SessionClose ('ts_data|raw_reads');
EXECTUE PROCEDURE TSL_Shutdown ('ts_data|raw_reads');