Find

Article
· Dec 9, 2025 4m read

IRIS IO Utility: A Complete Guide to Smart Importing in VS Code

Hello Community! 👋
Welcome to the second part of the IRIS IO Utility series. This extension represents my submission for the InterSystems "Bringing Ideas to Reality" Contest 2025 and offers you an intuitive and powerful interface for importing and exporting data directly inside VS Code.

If you find this extension useful, please consider voting for me at the contest!


In the previous article, we covered:

  • Extension overview
  • ODBC driver configuration
  • Export capabilities

Now it’s time to dive into the Import Engine — designed to support:

  • CSV
  • TXT (with any delimiter)
  • JSON
  • XLSX

The extension features a smart inference layer that analyzes the input file and automatically suggests the optimal IRIS table data formats, providing guided, assisted data modeling.


Import Modes — Two Distinct Workflows

The extension supports two distinct scenarios:

  • Create New Table
  • Load into Existing Table

Option A — Import to New Table

This is ideal when:

  • You’re loading a new dataset
  • You want a clean start, with a fresh table and schema
  • You’re in a prototyping or exploratory phase

What happens:

  • The extension reads the file’s data and infers column types automatically
  • You can customize the types if needed
  • You choose a schema and table name
  • You optionally define indexes
  • Then data gets imported — all in a safe, atomic operation

Option B — Import into Existing Table

Perfect for:

  • Updating a table
  • Adding new rows
  • Replacing outdated data

Two actions are available:

  • Append — simply adds new rows from the file
  • Replace — clears the current table data and replaces it with the new data

Before importing, the extension validates that the file’s columns match the target table’s structure. If there are mismatches, it will notify you and abort — protecting you from schema drift or data corruption.


Creating a new table by the IRIS IO utility

Step 1 — Open the Import View and select a file

After connecting to an IRIS instance:

  1. Click the cloud-up arrow icon
  2. Click on the "Create New Table" tab
  3. Choose the file to import

Supported formats are CSV, JSON, TXT and XLSX.

Step 2 — File Analysis & Type Inference

After loading a file, the import engine automatically:

  • Samples the file’s values to guess column types
  • Determines the most likely SQL types
  • Converts them to valid IRIS SQL types
  • Shows sample data beneath each column 
  • Lets you manually override the type if needed

Detected types include:

  • INTEGER
  • BIGINT
  • NUMERIC
  • DOUBLE
  • VARCHAR (255 or 4000 characters)
  • CLOB
  • DATE
  • TIMESTAMP
  • BIT

The result of the analysis is shown in the "Column Type Mapping" section at the bottom of the import webview.

You can change the data type and look at a sample of the data:

Step 3 — Create custom indexes

The extension supports index creation while creating a new table. 

For each column, you can:

  • Check an “Index” checkbox if you know you’ll often query or filter by that column
  • Select index type. Available types are:
    • INDEX
    • BITSLICE
    • BITMAP
    • COLUMNAR (IRIS Analytics)
  • You can edit the index name — if left empty, the extension auto-generates one
  • You can specify if index is unique
  • You can specify if a field should act as a primary key for the new table

Step 4 — Select Schema

When selecting a schema for the new table, you can choose to use a previously existing schema or to create a new schema.

When using a previously existing schema:

  • You can either specify a schema filter (optional) or just hitting the "Load Schemas" button to load all the available schemas within the selected namespace. 

When creating a new schema:

  • You can specify a new schema name in the format MySchemaName_SubSchemaName

Step 5 — Select Table Name

Once schema has been selected, you can specify a new table name. If a table with the same schema and table name already exists, the import will be aborted to prevent accidental overwriting.

Step 6 — Create Table & Import

Click on the Create button to create a new table and import data. 

The extension logs progress in the Output panel, and shows a popup notification when done. 


Loading data into an existing table by the IRIS IO utility

To inject new data into an existing table:

  1. Switch to the “Load into Existing Table” tab
  2. Select your file
  3. Choose target schema and table name
  4. Select import action: Append or Replace

The extension validates that the file’s columns align with the existing table schema and aborts if there are mismatches — safeguarding your data integrity.


Special case of TXT files: define the correct delimiter

When importing TXT files, the extension allows you to specify a custom delimiter to ensure the file is parsed correctly. This is especially useful when working with unconventional separators such as pipes (|), semicolons (;), tabs, or multi-character delimiters. Selecting the correct delimiter guarantees proper column detection and prevents misaligned or corrupted data during the import process.


Final Thoughts

The Import engine transforms IRIS IO Utility from a simple helper into a real data engineering tool.

It handles:

  • Type inference
  • Schema building
  • Index creation
  • Data loading
  • Diagnostic logging

All inside VS Code — clean, discoverable, and convenient.

Together with the Export engine, IRIS IO Utility provides a complete, modern, developer-friendly IO workflow for InterSystems IRIS.

If you enjoyed this feature and find IRIS IO Utility useful, please vote for it in the InterSystems Contest!🚀

2 Comments
Discussion (2)2
Log in or sign up to continue
Article
· Dec 9, 2025 9m read

Guide de démarrage sur %JSON et les entités dynamiques dans IRIS pour les utilisateurs débutants

Les entités dynamiques (objets et tableaux) dans IRIS sont extrêmement utiles lorsque vous devez transformer des données JSON en un modèle d'objet pour les stocker dans la base de données, comme dans les points de terminaison API REST hébergés dans IRIS. En effet, ces objets et tableaux dynamiques peuvent facilement servir de point de conversion d'une structure de données à une autre.

Discussion (0)2
Log in or sign up to continue
Announcement
· Dec 9, 2025

¡La Comunidad de Desarrolladores cumple 10 años!

Hola Comunidad:

El 7 de diciembre de 2025, la Comunidad de Desarrolladores de InterSystems celebró oficialmente su décimo aniversario. 🥳🎉

Y ahora rendimos homenaje a esta década de aprendizaje, colaboración, resolución de problemas y avance de las tecnologías de InterSystems. Tanto si habéis estado aquí desde el principio como si os habéis unido recientemente, gracias por vuestras contribuciones, preguntas, ideas y apoyo. Este logro os pertenece a todos vosotros 💖. Habéis construido esta comunidad hasta lo que es hoy, y estamos realmente agradecidos.

Como parte de la celebración, os invitamos a participar en un vídeo especial de aniversario. Y vaya si cumplisteis. Gracias a todos los que dedicasteis tiempo a compartir vuestros saludos, recuerdos y palabras amables.

¡Por otros 10 años más de innovación y colaboración! 💙

PD: Dejad un comentario si os habéis visto en los vídeos de recurso 😉


Permaneced atentos: esto es solo el comienzo. Muy pronto llegarán más momentos destacados y sorpresas del aniversario.

Discussion (0)1
Log in or sign up to continue
Question
· Dec 9, 2025

IRIS OAuth2 Client - "openid" scope error

I need to connect IRIS to a third-party FHIR server which in turn is connected to Keycloak.

For machine-to-machine communications, client credentials grants should be used. I don't know why exactly but the FHIR server requires access tokens to contain the "openid" scope, otherwise it returns 401 (unauthorized).

If the access token returned by Keycloak contains that scope, IRIS complains about ""ERROR #8859: Unsupported response to access token request: OpenID Connect is not supported for password and client credentials grant type". The error is produced by the OAuth2.Response class, line 393:

If openid {
    $$$SysLog(3,"OAuth2","[OAuth2.Response:ProcessParsedResponse]","OpenID Connect is not supported for password and client credentials grant type")
    Set sc=$$$ERROR($$$OAuth2ResponseUnsupported,"OpenID Connect is not supported for password and client credentials grant type")

I'm just curious what's the purpose of this check?

2 Comments
Discussion (2)3
Log in or sign up to continue
Article
· Dec 9, 2025 7m read

ミラーリングの作成手順(プライマリ&バックアップフェイルオーバーメンバー構成)

これは InterSystems FAQ サイトの記事です。

この記事では、ミラーリングの構成方法をご紹介します。

2025.1のバージョンより、既存のミラーリングされたデータベースをミラーメンバーに追加する際、「ミラーメンバーからの自動データベースダウンロード」が可能となりました。
以前のバージョンでは、手動でのバックアップとリストアを行っていましたが(もしくはIRIS.datのコピー)、この機能を使用するとデータベース作成時に、別のミラーメンバーから自動的にダウンロードされます。大変便利な機能なので、ぜひお試しください。
※ こちらの問題 があるため、「自動データベースダウンロード」機能は最新バージョン 2025.1.2~ でお試しください。​​​​​


本記事では、「自動ダウンロード」の機能についても、あわせてご紹介します。

では、ミラーの構成手順をご紹介します。
今回ご紹介するのは、同期ミラーによるフェールオーバー(常にデータベースが同期されて複製、障害時に自動でフェールオーバー)構成です。
手順は以下になります。


1) それぞれのサーバで、ISCAgent の構成・起動

2) それぞれのサーバで、ミラーのサービスを有効化

3) 最初のフェイルオーバーメンバー(プライマリ)を構成・ミラーへデータベースの追加

4) 2番目のフェイルオーバーメンバー(バックアップ)を構成・ミラーメンバーからの自動データベースダウンロード



今回は、各設定を管理ポータルを使用して行う方法をご紹介します。

【今回のサンプル・ミラー構成について】

  プライマリフェイルオーバーメンバ バックアップフェイルオーバーメンバ アービター
ミラー名 TESTMIRROR TESTMIRROR  
ミラーメンバ名 MACHINEA MACHINEB  
IPアドレス 10.0.0.244 10.0.0.151 10.0.0.155

 

1) それぞれのサーバで、ISCAgent の構成・起動

それぞれのサーバでISCAgent を構成・起動します。
構成・起動方法は、OSごとに異なりますのでドキュメントをご覧ください。

 ※アービターを使用する場合、フェールオーバー構成と別のマシン(10.0.0.155)でISCAgent を開始します。
  ISCAgentのみインストールすることも可能です。
  ダウンロードは、WRCDirectから行えます。 例:ISCAgent-2025.1.2.374.0-win_x64.exe

 ※Windowsの場合は、Windows(管理)ツール > サービスで 名前=ISCAgent のサービスを開始、また自動開始を構成します(インストール後の既定は「手動」設定のため、OS再起動後は停止状態となります)。
    
 

2) それぞれのサーバで、ミラーのサービスを有効化

管理ポータル:
[システム管理] > [構成] > [ミラー設定] > [ミラーサービス有効]

 
 

3) 最初のフェイルオーバーメンバー(プライマリ:)を構成・ミラーへデータベースの追加

3-1.
最初にフェイルオーバメンバを登録するマシン(プライマリ:MACHINEA)で、TEST という名前の新しいネームスペースを作成し、参照するデータベースとしてTEST データベースをデフォルト設定の状態で作成します。

※こちらの手順では、「相互運用プロダクション用にネームスペースを有効化」はオフ(チェックなし)で作成します
 

3-2.
ミラーの作成画面で、以下の設定を行います。

管理ポータル:
 [システム管理] > [構成] > [ミラー設定] > [ミラーの作成]

ミラー情報 設定値 ミラーフェイルオーバメンバ情報 設定値
ミラー名 TESTMIRROR ミラーメンバ名 MACHINEA
SSL/TLS 使用 いいえ スーパーサーバアドレス MACHINEAのIP アドレス(デフォルトはコンピュータ名
10.0.0.244
アービター使用 はい(デフォルト) エージェントポート 2188(デフォルト)
  10.0.0.155 / 2188    
仮想IP 使用  いいえ(デフォルト)    


 

3-3.
TESTMIRROR へ TEST データベースを追加します。ミラーデータベース名には、TEST を使用します。

管理ポータル:
 [システム管理] > [構成] > [システム構成] > [ローカルデータベース]
 TEST の編集 → ミラーTESTMIRRORに追加 をクリック
  ※最初から作る場合は、データベースの作成時に「ミラーデータベース?はい」をチェック

     

3-4.
TESTMIRROR へ追加された TEST を確認します。

管理ポータル:
 [システムオペレーション] > [ミラーモニタ]  

 

4) 2番目のフェイルオーバーメンバー(バックアップ:MACHINEB)を構成・ミラーメンバからの自動データベースダウンロードを行います。

4-1.
2 番目にフェイルオーバメンバとするマシンで(MACHINEB)、フェイルオーバメンバとして、ミラーに追加するため以下画面を開きます。

管理ポータル:
 [システム管理] > [構成] > [ミラー設定] > [フェイルオーバとして参加]

 以下の情報を登録し、接続ボタンを押下する。

ミラー名 TESTMIRROR
他システムのエージェントアドレス 10.0.0.244(MACHINEA のIP アドレス)
ミラーエージェントポート 2188(デフォルト)
インスタンス名 IRIS(MACHINEA のインスタンス名)

 

 

「次へ」クリック

ミラーメンバ名 MACHINEB
スーパーサーバアドレス 10.0.0.151
エージェントポート 2188
ミラープライベートアドレス 10.0.0.151
エージェントアドレス 10.0.0.151

 

 

4-2.
ミラーモニターでフェイルオーバーメンバーのステータスを確認する

最初に設定したフェールオーバー メンバーで、[ミラー モニター] ページ ( [システム操作] > [ミラー モニター]) を表示
ミラー フェールオーバー メンバー情報領域には、2 つのフェールオーバー メンバーのミラー メンバ名とネットワーク アドレスが一覧表示されます。

 

4-3.
MACHINEBのミラーへのデータベースの追加のため、ミラーメンバ(MACHINEA)から自動データベースダウンロードを行います。

ダウンロードを開始するには、新しいメンバーまたは復元対象のメンバーにデータベースを作成し、2 番目のダイアログで、「ミラー データベース?」に対して「はい」を選択し、ミラー内のデータベースの名前を正確に入力します。

管理ポータル:
 [システム管理] > [構成] > [システム構成] > [ローカルデータベース]
より、データベースの新規作成を行い、以下のように設定します。

ミラーデータベース?はい
ミラー・データベース名:TEST

 

※この機能は、新規作成ミラーデータベースに対しては非常に便利ですが、元のデータベースのサイズが大きい場合は非常に時間がかかるため、注意が必要です。サイズの大きいデータベースの場合は従来の方法(バックアップ&リストア、もしくはiris.datのコピー)をお勧めします。

※外部/オンラインバックアップ・リストアについては、以下の記事で詳細手順を説明していますので、参考になさってください。
外部バックアップとリストアについて
オンラインバックアップとリストアについて

※バックアップからのリストアの場合、
 Limit restore to mirrored databases? →Yes でリストアします(リストア後、ミラーが有効化&キャッチアップされます)

 この場合、データベース定義も別途必要になります。
 データベース定義がない場合、ミラーモニタにて「見つからないミラー・データベース・レポート」にリストされます。
 データベースを作成していない場合、新規データベース作成することで、「ミラーされたデータベース」に追加されます。
 

4-4.
ミラーモニタで確認します。

 

こちらで、フェイルオーバーミラー構成は完了です。

詳細は以下のドキュメントをご覧ください。
ミラーの作成

Discussion (0)0
Log in or sign up to continue