高速データウェアハウス Netezza にクライアント接続する（Windows編）

# 1. はじめに
Netezza (正式には Netezza Performance Server, NPS) はアプライアンス（ソフトウェア製品が組み込み済みのハードウェア製品）やクラウド環境 (OpenShift, Cloud Pak for Data) で動作します。Netezzaの評価版NPSVB（無料）はWindows PCやMacで動かすことができます。

本記事はWindows PCからNetezzaデータベースに接続する方法としてSQLコマンドインタープリタnzsqlとODBC接続を説明します。設定方法等を悩むところは少ないですが、パッケージの取得方法はマニュアルを見てもわかりにくいため、本記事が参考になると思います。また実行例に評価版NPSVBを用いているので、本記事に沿って無料で動作確認できます。

1. はじめに
1. 前提
1. 手順概要
1. 手順
1. 参考資料
1. 類似テーマを扱ったQiita記事

# 2. 前提
1) Windows 10または11が必要です。本記事の検証に使ったのはWindows 10ですが、Windows 11でも同様に動作すると思います。

2) Netezzaのアカウントが必要です。持っていない方は次のQiita記事をご覧になってNetezza評価版(NPSVB)を導入してください。

    - 高速データウェアハウス Netezza の評価版 NPSVB を無料で動かす（Windows環境）
        https://qiita.com/yamasakk/items/750fdfe30d22063087a9

3) IBMホームページのアカウント(IBMid)が必要です。このアカウントを使ってNetezzaクライアントをダウンロードします。IBMidを持っていなければ、次のQiita記事をご覧になって作成してください。

    - IBMidを作成してみる。
    https://qiita.com/Shumpei_Kubo/items/564126081dea547dd742

# 3. 手順概要
6つのステップに分けて手順を説明します。
1) Netezzaクライアントのパッケージを取得
2) Netezzaツールを導入
3) SQLインタープリタnzsqlを用いてデータベースに接続
4) ODBCドライバを導入
5) ODBC接続を設定
6) Microsoft Excelからデータベースに接続

# 4. 手順1) Netezzaクライアントのパッケージを取得
次のリンクをクリックしてFixCentralと呼ばれるダウンロードサイトにアクセスします。
- https://www.ibm.com/support/fixcentral

`Select product`タブをクリックし、続いて次の画面のように入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/7eec9f15-fd61-4fdf-7b54-c04b83591be6.png)
次の画面ではデフォルトのまま`Continue`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/45a67913-1d52-da6b-726f-ed8b90981aac.png)
パッケージの一覧が表示されます。この中から名前に`WS-ICPDS-NPS-Clients`を含むパッケージをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/907dd781-5cb3-95c0-128a-f268bf27174f.png)
IBMidを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/295c1827-5a54-198a-a25c-006d0be0ec3b.png)
ダウンロード方法を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/daf5c413-a8f9-017e-f52f-8757fe365f32.png)
パッケージの一覧が表示されます。`nps-winclient-v11.x.x.x.zip`をクリックしてダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/4c0a4673-8620-7ffa-8485-254373bcbdbc.png)

# 4. 手順2) Netezzaツールを導入
上でダウンロードしたパッケージをエクスプローラーで確認し、クリックして解凍します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/7d229e8e-5e1c-24ee-0d97-53723f255a62.png)
サブフォルダ`admin`に保存されている`nzsetup.exe`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/53fcc74d-e085-8c3c-4864-d60a66231c7d.png)
表示されたポップアップの`OK`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/7b427bb2-9c6e-250a-00a5-add1f8a1ecde.png)
ポップアップの設定項目はデフォルトのままにして画面を遷移させて導入を完了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/c56855e0-b52f-4168-e59b-02c2d5572ebc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/d4666e61-beec-bedc-0f1c-72825f0b4df8.png)
Windowsコマンドプロンプトを起動して、導入されたNetezzaツールを確認します。
```
Microsoft Windows [Version 10.0.19045.3208]
(c) Microsoft Corporation. All rights reserved.

C:\Users\xxxxxxx>dir "c:\Program Files\IBM Netezza Tools\Bin"
 ドライブ C のボリューム ラベルは Windows7_OS です
 ボリューム シリアル番号は 4683-4B0F です

 c:\Program Files\IBM Netezza Tools\Bin のディレクトリ

2021/04/11  08:43    <DIR>          .
2021/04/11  08:43    <DIR>          ..
2020/12/17  04:40           446,464 HHActiveX.dll
2023/05/16  23:32            20,480 nzconvert.exe
2023/05/16  23:34         1,671,168 nzds.exe
2023/05/16  23:34         2,659,328 nzevent.exe
2023/05/16  23:35         1,682,432 nzhw.exe
2023/05/16  23:34         2,628,096 nzload.exe
2023/05/16  23:34         1,985,536 nzodbc_nzload.dll
2023/05/16  23:34         2,592,768 nzpassword.exe
2023/05/16  23:34         2,458,112 nzrev.exe
2023/05/16  23:34         2,655,744 nzsession.exe
2023/05/16  23:35         2,269,184 nzsql.exe
2023/05/16  23:34         2,592,768 nzstate.exe
2023/05/16  23:34         2,586,624 nzstats.exe
2023/05/16  23:34         2,598,400 nzsystem.exe
              14 個のファイル          28,847,104 バイト
               2 個のディレクトリ  68,053,377,024 バイトの空き領域
```

# 4. 手順3) SQLインタープリタnzsqlを用いてデータベースに接続
ここでは別途作成したNetezzaユーザーIDとして`yama0808a`とデータベース`db0808a`を用いますが、ご自身の環境で利用可能なユーザーを使ってください。もちろん管理者`admin`（デフォルトパスワード `password`）とデータベース`system`を使って動作を確認することも可能です。なお、このユーザーIDとデータベース名は手順5でも用います。

Windowsコマンドプロンプトを起動してnzsqlコマンドが導入されていることを確認して実行し、データベースに接続します。
```
C:\Users\xxxxxxxx>where nzsql
C:\Program Files\IBM Netezza Tools\Bin\nzsql.exe

C:\Users\xxxxxxx>nzsql -h 192.168.9.2 -u yama0808a -pw xxxxxxxx -d db0808a
Welcome to nzsql, the IBM Netezza SQL interactive terminal.

DB0808A.ADMIN(YAMA0808A)=>
```

以下、データベース一覧の確認、スキーマ作成、テーブル作成、insertとselectの実行の例です。テーブルなどの名前に日本語を使うことができます。
```
DB0808A.ADMIN(YAMA0808A)=> \l
  List of databases
 DATABASE |   OWNER
----------+-----------
 DB0808A  | YAMA0808A
 SYSTEM   | ADMIN
(2 rows)

DB0808A.ADMIN(YAMA0808A)=> create schema sc0810a;
CREATE SCHEMA

DB0808A.ADMIN(YAMA0808A)=> set schema sc0810a;
SET SCHEMA

DB0808A.SC0810A(YAMA0808A)=> select current_schema;
 CURRENT_SCHEMA
----------------
 SC0810A
(1 row)

DB0808A.SC0810A(YAMA0808A)=> create table 表0810c (番号 int, 名前 nvarchar(10));
CREATE TABLE

DB0808A.SC0810A(YAMA0808A)=> \d
           List of relations
 Schema  |  Name   | Type  |   Owner
---------+---------+-------+-----------
 SC0810A | 表0810C | TABLE | YAMA0808A

DB0808A.SC0810A(YAMA0808A)=> \d 表0810c
                            Table "表0810C"
 Attribute |              Type              | Modifier | Default Value
-----------+--------------------------------+----------+---------------
 番号      | INTEGER                        |          |
 名前      | NATIONAL CHARACTER VARYING(10) |          |
Distributed on hash: "番号"

DB0808A.SC0810A(YAMA0808A)=> insert into 表0810c values (3,'山');
INSERT 0 1

DB0808A.SC0810A(YAMA0808A)=> insert into 表0810c values (4,'かず');
INSERT 0 1

DB0808A.SC0810A(YAMA0808A)=> select * from 表0810c;
 番号 | 名前
-----+------
   3 | 山
   4 | かず
(2 rows)

DB0808A.SC0810A(YAMA0808A)=> \q

C:\Users\xxxxxxxx>
```

# 4. 手順4) ODBCドライバを導入
手順2で展開したフォルダ配下に`drivers`フォルダがあります。ここに含まれている`nzodbcsetup.exe`をダブルクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/f0d093c0-96f0-e665-6b9c-0e1f5fc35785.png)
表示されたポップアップの`OK`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/208c35f4-7fa4-24f9-4bdd-515ba6a1c0d0.png)
次の画面では`64-bit`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/861b14bc-e81e-35ee-4646-dcf0a1e0d547.png)
次の画面の`Optimze for ASCII character set`はデフォルトで非選択となっており、そのまま変更せずに`次へ`をクリックします。データベースで日本語を使うため、このオプションを選択しません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/b16d2662-20be-5e83-7542-2b9bf8723d8c.png)
次のように画面を進めて導入が完了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/1c57fa7a-1c7c-23e5-a4b1-0c8e3cfb0c23.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/c030cf0c-82e6-d2c6-658b-c078e95ca1fe.png)

# 4. 手順5) ODBC接続を設定
Windowsスタートメニューで`ODBCデータソース(64ビット)`を探してクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/95b05933-59fb-8a4c-0c4d-04938027f54a.png)
ポップアップが表示されます。`システムDSN`をクリックし、`追加`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/b5d4f3bd-05f3-d0b1-f5e1-01f814731f5b.png)
ドライバーの選択画面で`NetezzaSQL`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/929ff0e2-0375-8ece-8c32-d3af49d69291.png)
次のように入力します。ただし`Data Source`は任意の名前で、下図と同じものを指定する必要はありません。`Database` `User Name` `Password`に手順3と同じもの設定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/d53c62e3-c923-4a90-7960-2221d0801884.png)
データベースに接続できたら次のポップアップが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/d7572bae-431f-d303-3354-294947239f02.png)

# 4. 手順6) Microsoft Excelからデータベースに接続
WindowsスタートメニューからExcelを起動して次のように`From Microsoft Query`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/f03db128-d896-1526-30a6-4d954c982ba8.png)
ポップアップが表示されます。手順5で指定したData Source名が表示されるので、それをクリックして`OK`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/eb3ca701-389d-6210-c2f2-5f0ba22d6877.png)
手順3で作成したテーブルをクリックし、`>`をクリックして列をqueryの対象とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/33a507c1-569f-8db8-928b-ea9314bf282c.png)
表示されるポップアップの設定をデフォルトのまま進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/0f120576-9224-99fd-a81d-4f566a8a6de8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/e9d82fc0-e5d5-eb8b-56bc-21d708e6c4cb.png)
手順3で作成したテーブルの内容が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/b4c1a739-f315-c4a5-dca4-22cf84c425d1.png)

# 5. 参考資料
- Netezzaマニュアル
    - Client software packages
        https://www.ibm.com/docs/en/netezza?topic=packages-client-software
    - Installing the Netezza Performance Server tools on a Windows client
        https://www.ibm.com/docs/en/netezza?topic=packages-installing-netezza-performance-server-tools-windows-client
    - The nzsql command
        https://www.ibm.com/docs/en/netezza?topic=commands-nzsql-command
    - https://www.ibm.com/docs/en/netezza?topic=driver-setting-up-odbc-environment
        Setting up an ODBC environment
- Qiita記事
    - 高速データウェアハウス Netezza の評価版 NPSVB を無料で動かす（Windows環境）
        https://qiita.com/yamasakk/items/750fdfe30d22063087a9

# 6. 類似テーマを扱ったQiita記事
- PC上でメモリ5GBで動く! Netezza Software Emulatorを使ってみた
    https://qiita.com/ishida330/items/8a23ae32b34b9aa461a0
- macOS に Netezza Software Emulator をインストール
    https://qiita.com/sonots/items/08cbc2b55f19404af2cc