JDBC互換データベースからのデータの読み込み
DSE Graph Loaderを使用してJDBC互換データベースからデータを読み込む方法。
JDBC互換データベースから読み込むためのデータ・マッピング・スクリプトを説明とともに示します。完全なスクリプトは、ページの最後にあります。
手順
- 必要に応じて、マッピング・スクリプトに構成を追加します。
-
読み込み対象のデータのサンプルは以下のようになります。
SAMPLE INPUT // authorデータ用: name:Julia Child gender:F // bookデータ用: name:Simca's Cuisine:100 Classic French Recipes for Every Occasion year:1972 ISBN:0-394-40152-2 // authorBookデータ用: bname:Simca's Cuisine:100 Classic French Recipes for Every Occasion aname:Simone Beck
プロパティ・キー
name
は、authorBook
ファイルの頂点ラベルauthor
およびbook
の両方に使用されるため、変数aname
およびbname
は著者名および書名にそれぞれ使用されます。これらの変数は、author
頂点とbook
頂点間の辺を作成するためのマッピング・ロジックで使用されます。 -
JDBC情報でデータ入力データベースを指定します。変数
inputDatabase
によって、データ入力データベースが指定されます。この例ではH2データベースを使用しますが、JDBC準拠データベースであればどのデータベースも使用できます。connection
、driver
、およびuser
がすべて指定されます。追加オプションpassword
を含めることができます。// DATA INPUT // データ入力ソース(データ選択のためのデータベース接続およびSQLステートメント) // inputDatabaseはデータベース名です inputDatabase = '~/test' db = Database.connection("jdbc:h2:" + inputDatabase).H2().user("sa") // SQLクエリーを介してデータベース・ソースからの複数のデータ入力を定義します authorInput = db.query "SELECT * FROM AUTHOR"; bookInput = db.query "SELECT * FROM BOOK"; authorBookInput = db.query "SELECT * FROM AUTHORBOOK";
-
各行で、データを取得するために使用されるデータベース・クエリーが指定されます。マップ
authorInput
が作成され、データの処理に使用されます。このマップは、transformsを使用して読み込む前に操作できます。authorInput = db.query "SELECT * FROM AUTHOR";
- マッピング・スクリプトの本文を作成します。マッピング・スクリプトのこの部分は、ファイル形式にかかわらず同じです。
-
ドライ・ランとしてテキスト読み込みにDSE Graph Loaderを実行するには、以下のコマンドを使用します。
graphloader authorBookMappingJDBC.groovy -graph testJDBC -address localhost -dryrun true
テスト目的の場合、
graphloader
の実行前に、指定されたグラフが存在する必要はありません。ただし、実稼働用途では、graphloader
を使用する前にグラフとスキーマを作成する必要があります。 -
完全な読み込みスクリプトは以下のとおりです。
/* SAMPLE INPUT - タブを使用します author: name:Julia Child gender:F book : name:Simca's Cuisine:100 Classic French Recipes for Every Occasion year:1972 ISBN:0-394-40152-2 authorBook: bname:Simca's Cuisine:100 Classic French Recipes for Every Occasion aname:Simone Beck */ // CONFIGURATION // スキーマを作成するようにデータ・ローダーを構成します config create_schema:true, load_new:true, load_threads: 3 // DATA INPUT // データ入力ソース(データ選択のためのデータベース接続およびSQLステートメント) // inputDatabaseはデータベース名ですinputDatabase = '~/test' db = Database.connection("jdbc:h2:" + inputDatabase).H2().user("sa") // SQLクエリーを介してデータベース・ソースからの複数のデータ入力を定義します authorInput = db.query "SELECT * FROM AUTHOR"; bookInput = db.query "SELECT * FROM BOOK"; authorBookInput = db.query "SELECT * FROM AUTHORBOOK"; //(定義済みインラインとして)いずれかのマッパーを使用して読み込むデータ・ソースを指定します load(authorInput).asVertices { label "author" key "name" } load(bookInput).asVertices { label "book" key "name" } load(authorBookInput).asEdges { label "authored" outV "aname", { label "author" key "name" } inV "bname", { label "book" key "name" } }