CSVを使ってSAP HANA Cloudへデータ取込する方法(注意点含む)

## はじめに

新システムの刷新等で、SAP HANA Cloudを使用するとなり、現行システムからデータを移行したいという方は、少なくないでしょう。
そういった際に、選択肢として、現行システムからデータを出力し、データ取込用のプログラムを作りこむ方法もあるかと思いますが、もっとシンプルにデータを取り込みたいという方に向けてプログラムを作成せずに、GUIベースでCSV、TSV等のファイルベースでデータを取込む方法をお伝えします。

## 取込方法

■概要
SAP HANA Database Explorerのimport data機能を使ってデータを取り込みます。

①スキーマ(今回は、TEST)→Catalog→Tablesまで行きます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/26dec528-2c8c-55a1-bd6f-044fca15c0e3.png" width="50%">

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/42d2d33e-99e6-f320-3ff9-b2f2b862a1e8.png" width="50%">

②Tablesを右クリックして、import dataをクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/884e62f5-7c4b-3ec6-2400-eddacdcdc0da.png" width="50%">

③IMPORT　TYPEは、Import Dataを選択します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/c63f68c8-9dd6-43d1-ea20-333ea40545df.png" width="50%">

③IMPORT SOURCEは、各取込内容にあった選択肢をいれます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/bb3361c5-c892-f562-5e2c-ba2382c8e47f.png" width="50%">

１．Import Data From：取込元ファイルの置き場所
Amazon S3から等、様々な選択肢がありますが、今回は、ローカルからのCSV取込を選択します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/e9148365-0f57-4aef-80d5-145ec53dcc20.png" width="50%">

２．File has header in first rowは、先頭行がヘッダーかの選択肢になります。
今回は、ヘッダーがないデータを想定しますので、チェックを外します。

３．Trim whitespaceは、取込データのスペースを取り除くかの選択肢になります。
データを取込元ファイルのまま正確に取り込むのであれば、チェックを外します。
※チェックをつけることで、元データからスペースがとられるため、完全に取込元と一致しないリスクが出てくるため、取込方針は、事前にしっかりと決めましょう。

４．Field Delimiterは、ファイルの区切り文字の選択肢になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/cc4896a1-142d-d10d-39f4-598087911c4c.png)

５．File to Importは、取込元ファイルを選択します。
こちらは、csvファイルを選択します。
※注意点：取込元ファイルがcsvファイルしか選択できないのに、Field Delimiterは、tab等の複数の選択肢があります。
そのため、tsv(タブ区切りのファイル)の場合は、拡張子をcsvに変えてから選択する対応が必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/9e061785-5be7-7c23-9819-ceed9999f620.png)


④Database Object Detailsは、データを取り込む際にテーブルを新規作成するか既存に取込むかの選択肢になります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/cf229f88-5f01-e091-047c-dd9f257b3dd2.png" width="50%">
※Create a new tableは、CSVからテーブルを新規作成して、データを取込む。
※Add to an existing tableは、既存に取込むかの選択肢になります。

移行対象のテーブルが決まっていることの方が多いかと思いますので、今回は、下のAdd to an existing tableを選択します。


⑤SchemaとTableは、対象のスキーマとテーブルを入力してください。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/8065d25a-f162-4513-cea1-1c80884f475f.png" width="50%">

⑥下記のようにCSVの列が表示され、取込前の確認のフェーズになります。
※想定外のデータが入っていて、列がずれている等もあり得ますので、ここでの確認は、重要です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/238d593f-165b-844f-43c9-3498d618f5be.png" width="50%">

⑦エラーが発生した際の選択肢になります。
※基本的にはエラー前提でデータを移行する方は、多勢ではないかと思いますので、今回は、一番上のエラーが発生したらログに一覧で表示されるモードを選択して、Reviewを押下します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/4ee5a255-7349-2d59-1171-5fd054e92edf.png" width="50%">

⑧上記の手順を終えると下記のように、取込前の最終確認のフェーズになります。
※問題なければ、Import into Databeseを押下します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830694/056168df-1fcc-dcc6-5456-d9e4835e248d.png" width="50%">

⑨これにて、データの取込は完了です。
※エラーが発生した場合は、エラーが一覧で出力されますので、エラー内容を元に地道に確認していきましょう。

■注意点
データがエラーなく取り込めたと思って、安心してはいけません。
SJISで作られたCSVファイルを取り込んでしまうとUnicodeへの自動変換時に文字化けを起こしてしまいます。
移行データであれば、正確に移行するのは、マストなはずですので、取込元ファイルの文字コードには、注意しましょう。
また、文字コードが違う場合は、事前に変更をしてから取り込むことで、文字化けは解消されますので、実施してみてください。


## まとめ

データの取込については、気を使う作業で移行前とのデータの比較等で大変かと思います、こちらのブログで少しでも負荷軽減になればと思います。