Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/isc-rsingh/iris-load-data-api

REST API for loading data into InterSystems IRIS
https://github.com/isc-rsingh/iris-load-data-api

intersystems-iris

Last synced: 19 days ago
JSON representation

REST API for loading data into InterSystems IRIS

Awesome Lists containing this project

README

        

# IRIS Data Loading app and REST API

This application facilitates CSV file input into IRIS and IRIS for Health, providing a front-end client to the LOAD DATA SQL command. Takes as input a CSV file, infers data types, and allows the user to edit column names and data types.

The repository includes an Angular application and a data loading REST API that uses IRIS SQL Utilities for introspecting CSV files.

> **Warning**
> This only works for CSV files on the same file system as IRIS itself. Uploading the CSV file to a remote server is a desired future feature.

## Application Installation

- Edit `src/environments/environments.ts` to match your install of the data loading REST API
- Execute `ng build` (if needed, set up Angular)
- If installing in IRIS...
- look at `index.html` in the dist/proto folder and make sure base reads as follows:
```

```
- in an IRIS session, run `zpm load `, or set up a CSP application in IRIS and copy all files in the `dist/proto` directory to that location.
- If installing in an external web server...
- copy all files in the `dist/proto` directory to the web server

## REST endpoints

### POST /columns

Returns a list of column names with data types using https://github.com/bdeboe/isc-sql-utils to infer the schema.

Example body:
```json
{
"from": {
"file": {
"path": "/Users/rsingh/Downloads/iris.csv",
"columnseparator": "\t"
}
},
"verbose": 1,
"readlines": 0
}
```

### POST /createtable

Takes the fields object of a JSON configuration file into an InterSystems IRIS CREATE TABLE statement and executes it.

Example body:
```json
{
"tablename": "SQLUser.dataexport",
"fields": [
{
"srcname": "care_site_id",
"type": "BIGINT",
"length": 0
},
{
"srcname": "care_site_name",
"type": "VARCHAR",
"length": "1"
},
{
"srcname": "place_of_service_concept_id",
"type": "BIGINT",
"length": 0,
"destdatatype": "INT"
},
{
"srcname": "location_id",
"type": "VARCHAR",
"length": "1"
},
{
"srcname": "care_site_source_value",
"type": "VARCHAR",
"length": "11"
},
{
"srcname": "place_of_service_source_value",
"type": "VARCHAR",
"length": "48"
}
]
}
```

### POST /load

Munges a JSON configuration file into an InterSystems IRIS
LOAD DATA statement and executes it.

Example body:
```json
{
"from": {
"file": {
"header": true,
"skip": 0,
"columnseparator": ","
},
"filepath": "/Users/rsingh/Downloads/dataexport.csv"
},
"tablename": "SQLUser.dataexport",
"verbose": 0,
"charset": "UTF-8",
"fields": [
{
"srcname": "care_site_id",
"type": "BIGINT",
"length": 10,
"destname": "caresiteid",
"destdatatype": "INT"
}
]
}
```
## Docker
### Prerequisites
Make sure you have [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) and [Docker desktop](https://www.docker.com/products/docker-desktop) installed.
### Installation
Clone/git pull the repo into any local directory
```
$ git clone https://github.com/rcemper/DK_iris-load-data-api.git
```
To build and start the container run:
```
$ docker compose up -d --build && docker compose logs -f
```
To open IRIS Terminal do:
```
$ docker-compose exec iris iris session iris
USER>
```
or using **WebTerminal**
```
http://localhost:42773/terminal/
```
To access IRIS System Management Portal
```
http://localhost:42773/csp/sys/UtilHome.csp
```