Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/isc-rsingh/iris-load-data-api
- Owner: isc-rsingh
- License: apache-2.0
- Created: 2023-06-20T18:52:15.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-24T21:02:52.000Z (8 months ago)
- Last Synced: 2024-11-08T14:57:02.039Z (2 months ago)
- Topics: intersystems-iris
- Language: TypeScript
- Homepage:
- Size: 244 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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 thefields
object of a JSON configuration file into an InterSystems IRISCREATE 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
```