データのインポート
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このドキュメントでは、ScalarDB Data Loader のインポート機能について説明します。
機能
- JSON または JSON Lines ファイルからデータをインポート
- ソースフィールド名マッピングに基づく自動データマッピング
- JSON 制御ファイルによるカスタムデータマッピング
- 1つのレコードまたは行から複数のテーブルにデータをインポート
- INSERT、UPDATE、UPSERT のサポート
使用方法
Data Loader のインポート機能は、次の最小限の設定で開始できます:
./scalardb-data-loader import --config scalardb.properties --namespace namespace --table tableName
上記の設定により、制御ファイルが使用されず、データマッピングが自動的に適用されるインポートプロセスが開始されます。
新規または既存のデータを正常にインポートするには、次の手順を実行してください
-
インポートする必要があるデータを含むソースファイルを準備します。
-
適切なインポートモードを選択します。デフォルトでは、インポートは
upsertモードで実行されます。つまり、新しい場合はデータが挿入され、パーティションキーやクラスタリングキーが見つかった場合は更新されます。その他のオプションは、insertモードまたはupdateモードです。 -
データをインポートする正しい
namespaceおよびtable名を見つけます。 -
各データ行に対して
all required columnsチェックを実行するかどうかを決定します。有効にすると、列が欠落しているデータ行は失敗として扱われ、インポートされません。 -
successおよびfailed出力ファイルのパス名を指定し ます。デフォルトでは、Data Loader は作業ディレクトリにファイルを作成します。 -
JSON データを処理する場合、成功または失敗のログファイルの JSON 出力を
pretty printにするかどうかを決定します。デフォルトでは、このオプションはパフォーマンスのために無効になっています -
必要に応じて
threads引数を指定してパフォーマンスを調整します -
コマンドラインからインポートを実行して、データのインポートを開始します。実行中の ScalarDB インスタンスに応じて、ScalarDB Data Loader を正しい
storageまたはtransactionモードで実行してください。
コマンドラインオプション
ScalarDB Data Loader で使用できるオプションの一覧を次に示します。
| オプション | 説明 | 使用方法 |
|---|---|---|
| --mode | ScalarDB の実行モード。省略した場合、デフォルト値は storage です。 | scalardb-data-loader --mode transaction |
| --config | 設定ファイルへのパス。省略した場合、ツールは現在のフォルダーで scalardb.properties という名前のファイルを検索します。 | scalardb-data-loader --config scalardb.properties |
| --namespace | テーブルデータをエクスポートする名前空間。制御ファイルが指定されていない 場合は必須です。 | scalardb-data-loader --namespace namespace |
| --table | データをエクスポートするテーブルの名前。制御ファイルが指定されていない場合は必須です。 | scalardb-data-loader --table tableName |
| --import-mode | ScalarDB テーブルにデータをインポートするモード。サポートされているモードは insert、update、および upsert です。オプション。デフォルトでは、値は upsert に設定されています。 | scalardb-data-loader --import-mode=upsert |
| --all-columns-required | 設定されている場合、列が欠落しているデータ行はインポートできません。オプションです。デフォルトでは、チェックは実行されません。 | scalardb-data-loader --all-columns-required |
| --file | インポートするファイルへのパスを指定します。必須。 | scalardb-data-loader --file <pathToFile> |
| --success | 成功したインポート結果を書き込むために作成されるファイルへのパス。成功したインポート結果と失敗したインポート結果は、両方とも別のファイルに書き込まれます。 オプションです。デフォルトでは、現在の作業ディレクトリに新しいファイルが作成されます。 注: ファイルが既に存在する場合は、上書きされます。 | scalardb-data-loader --success <path to file> |
| --failed | 失敗したインポート結果を書き込むために作成されるファイルへのパス。 オプション。デフォルトでは、現在の作業ディレクトリに新しいファイルが作成されます。 注: ファイルがすでに存 在する場合は、上書きされます。 | scalardb-data-loader --failed <path to file> |
| --threads | 同時処理のスレッド数。 | scalardb-data-loader --threads 500 |
| --format | インポートファイルの形式。json および jsonl ファイルがサポートされています。オプション。デフォルトでは値 json が選択されます。 | scalardb-data-loader --format json |
| --ignore-null | ソースファイル内の null 値は無視されます。つまり、既存のデータは上書きされません。オプション。デフォルトでは値は false です。 | scalardb-data-loader --ignore-null |
| --pretty | 設定すると、成功ファイルと失敗ファイルへの出力は pretty print モードで行われます。デフォルトでは、このオプションは有効になっていません。 | scalardb-data-loader --pretty |
| --control-file | カスタムデータマッピングやマルチテーブルインポートのルールを指定する JSON 制御ファイルへのパス。 | scalardb-data-loader --control-file control.json |
| --control-file-validation-level | 制御ファイルの検証レベル。MAPPED、KEYS、または FULL。オプションで、デフォルトではレベルは MAPPED に設定されています。 | scalardb-data-loader --control-file-validation-level FULL |
| --log-put-value | ScalarDB PUT 操作で使用された値がログファイルに含まれるかどうか。オプションで、デフォルトでは無効になっています。 | scalardb-data-loader --log-put-value |
| --error-file-required | インポートファイルに CSV データが含まれている場合に、オプションの JSON タイプのエラーファイルをエクスポートします。デフォルトでは、このオプションは無効になっています。 | scalardb-data-loader --error-file-required |
| --error | インポートファイルに CSV データが含まれている場合に、オプションのエラーファイルを指定します。 | scalardb-data-loader --error <pathToFile> |
| --delimiter | インポートファイルに CSV データが含まれている場合に、カスタム区切り文字を指定します。 | scalardb-data-loader --delimiter <value> |
| --header | インポートファイルに CSV データが含まれていて、ヘッダー行がない場合に、ヘッダー行データを指定します。 | scalardb-data-loader --header <value> |
インポートモード
Data Loader は、次のインポートモードをサポートしています:
| モード | 説明 |
|---|---|
| INSERT | 各ソースレコードは新しいデータとして扱われます。パーティションとクラスタリングキーに基づいて、ScalarDB テーブルにデータがすでに存在する場合、このソースデータのインポートは失敗します。 |
| UPDATE | 各ソースレコードは、ScalarDB テーブル内の既存のデータの更新として扱われます。パーティションキーとクラスタリングキーに基づいて、テーブルにデータが存在しない場合、このソースデータのインポートは失敗します。 |
| UPSERT | ターゲット ScalarDB テーブルにすでにデータが含まれている場合、インポートは UPDATE によって行われます。ターゲットデータがない場合は、INSERT として扱われます。 |
注:
INSERT の場合、自動マッピングまたは制御ファイルによるカスタムマッピングによって、各ターゲット列のソースファイル内に一致するフィールドが必要です。これは、INSERT に変わる UPSERT にも適用されます。
データマッピング
自動マッピング
制御ファイルが指定されていない場合、Data Loader はソース JSON データ内のフィールドを ScalarDB テーブル内の使用可能な列に自動的にマッピングします。名前が一致せず、すべての列が必須である場合は、検証エラーとして扱われます。この場合、このレコードのインポートは失敗し、結果は失敗した出力ログに追加されます。