すべてのプロダクト
Search
ドキュメントセンター

DataWorks:SAP HANA

最終更新日:Aug 21, 2026

SAP HANA データソースを使用すると、DataWorks で SAP HANA のデータを読み書きできます。

サポートしているバージョン

  • DataBase 2.00.048.06.1623425628

  • DataBase 2.00.055.00.161

制限事項

サポートしているデータ型

SAP HANA Reader は、以下のデータ型をサポートしています。

型のカテゴリ データ型
整数 INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT
浮動小数点 FLOAT、DOUBLE、DECIMAL
文字列 VARCHAR、CHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
日付と時刻 DATE、DATETIME、TIMESTAMP、TIME、YEAR
ブール値 BIT、BOOL
バイナリ TINYBLOB、MEDIUMBLOB、BLOB、LONGBLOB、VARBINARY
重要

上記以外のデータ型はサポートされていません。SAP HANA Reader は、tinyint(1) を整数として扱います。

データソースの追加

同期タスクを開発する前に、DataWorks に SAP HANA をデータソースとして追加します。手順については、「データソース管理」をご参照ください。

説明

データソースを追加する際、パラメーターの説明は DataWorks コンソールで直接確認できます。

説明

SAP HANA データソースを設定する際、socketTimeout などの Java Database Connectivity (JDBC) 接続パラメーターは [詳細パラメーター] フィールドでは受け付けられません。このフィールドは、connectTimeoutuseSSL などの一部のドライバープロパティのみをサポートしています。これらのパラメーターを設定するには、[データベース名] の値に dbname?key=value の形式で追加します。たとえば、[データベース名]testdb?socketTimeout=60000 に設定すると、JDBC URL は jdbc:sap://<host>:<port>/testdb?socketTimeout=60000 となります。

データ同期タスクの開発

単一テーブルのオフライン同期タスクの設定

コードレス UI またはコードエディタを使用してタスクを設定します:

すべてのスクリプトパラメーターとスクリプトのデモについては、「付録:スクリプトのデモとパラメーターの説明」をご参照ください。

付録:スクリプトのデモとパラメーターの説明

以下のセクションでは、コードエディタで設定されたバッチ同期タスクの Reader および Writer スクリプトのパラメーターについて説明します。スクリプトのフォーマット要件については、「コードエディタでタスクを設定」をご参照ください。

Reader スクリプトのデモ

すべての Reader の例では、"stepType": "saphana" を使用して SAP HANA プラグインを識別します。

単一データベース内の単一テーブル

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "saphana",
            "parameter": {
                "column": [
                    "id"
                ],
                "connection": [
                    {
                        "querySql": ["select a,b from join1 c join join2 d on c.id = d.id;"],
                        "datasource": "",
                        "table": [
                            "xxx"
                        ]
                    }
                ],
                "where": "",
                "splitPk": "",
                "encoding": "UTF-8"
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "0"
        },
        "speed": {
            "throttle": true,
            "concurrent": 1,
            "mbps": "12"
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

シャードテーブル

シャーディングにより、SAP HANA Reader は複数の SAP HANA テーブルからデータを読み取ることができます。すべてのシャードテーブルは同じスキーマを共有する必要があります。

{
    "type": "job",
    "version": "1.0",
    "configuration": {
        "reader": {
            "plugin": "saphana",
            "parameter": {
                "connection": [
                    {
                        "table": [
                            "tbl1",
                            "tbl2",
                            "tbl3"
                        ],
                        "datasource": "datasourceName1"
                    },
                    {
                        "table": [
                            "tbl4",
                            "tbl5",
                            "tbl6"
                        ],
                        "datasource": "datasourceName2"
                    }
                ],
                "singleOrMulti": "multi",
                "splitPk": "db_id",
                "column": [
                    "id", "name", "age"
                ],
                "where": "1 < id and id < 100"
            }
        },
        "writer": {}
    }
}

Reader スクリプトのパラメーター

パラメーター 説明 必須 デフォルト値
username SAP HANA データベースのユーザー名です。 はい なし
password SAP HANA データベースのパスワードです。 はい なし
column 同期する列です。* を使用してすべての列を同期します。列名にスラッシュ (/) が含まれる場合は、二重引用符で囲み、バックスラッシュで引用符をエスケープします。たとえば、/abc/efg という名前の列の場合、値を \\"/abc/efg\\" に設定します。 はい なし
table 同期するテーブルの名前です。単一のテーブルの場合でも、値を配列として指定します。 はい なし
jdbcUrl SAP HANA データベースの Java Database Connectivity (JDBC) URL です。例:jdbc:sap://127.0.0.1:30215?currentschema=TESTsocketTimeout などの追加の JDBC 接続パラメーターを追加できます。例:jdbc:sap://127.0.0.1:30215?currentschema=TEST&socketTimeout=60000 はい なし
splitPk 同時同期の分割キーとして使用される数値型の整数列です。そのような列が存在しない場合は、この項目を空のままにします。 いいえ なし

Writer スクリプトのデモ

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "saphana",
            "parameter": {
                "postSql": [],
                "datasource": "",
                "column": [
                    "id",
                    "value"
                ],
                "batchSize": 1024,
                "table": "",
                "preSql": [
                    "delete from XXX;"
                ]
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "0"
        },
        "speed": {
            "throttle": true,
            "concurrent": 1,
            "mbps": "12"
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Writer スクリプトのパラメーター

パラメーター 説明 必須 デフォルト値
datasource データソース名です。コードエディタで設定した名前と一致する必要があります。 はい なし
table 送信先テーブルの名前です。 はい なし
column データを書き込む送信先の列を配列として指定します。例:["id", "name", "age"]["*"] を使用して、すべての列に順番に書き込みます。列名にスラッシュ (/) が含まれる場合は、二重引用符で囲み、バックスラッシュで引用符をエスケープします。たとえば、/abc/efg という名前の列の場合、値を \\"/abc/efg\\" に設定します。 はい なし
preSql 同期タスクが開始される前に実行される SQL ステートメントです。これを使用して、ロード前に古いデータをクリアします。例:truncate table tablename。コードレス UI では、1つのステートメントのみがサポートされます。コードエディタでは、複数のステートメントがサポートされますが、トランザクションの原子性はサポートされていません。 いいえ なし
postSql 同期タスクが完了した後に実行される SQL ステートメントです。コードレス UI では、1つのステートメントのみがサポートされます。コードエディタでは、複数のステートメントがサポートされます。例:ALTER TABLE tablename ADD colname TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP いいえ なし
batchSize 1回のバッチでコミットされるレコード数です。値を大きくすると、ネットワークのラウンドトリップが減り、スループットが向上しますが、設定値が高すぎるとメモリ不足 (OOM) エラーが発生する可能性があります。 いいえ 1024