CSVファイルからOracle NoSQL Databaseへの移行

この例は、Oracle NoSQL Database Migratorを使用してCSVファイルからOracle NoSQL Databaseにデータをコピーする方法を示しています。

複数のオプションを評価した後、組織はOracle NoSQL DatabaseをNoSQL Databaseプラットフォームとして最終決定します。ソース・コンテンツがCSVファイル形式であるため、これをOracle NoSQL Databaseに移行する方法を探そうとします。

この例では、course.CSVというCSVファイルからデータを移行する方法を学習します。このファイルには、大学が提供する様々なコースに関する情報が含まれています。構成ファイルは、runMigratorユーティリティから生成します。

識別されたソースおよびシンクの詳細を含む構成ファイルを準備することもできます。「ソースとシンク」を参照してください。

前提条件
  • 移行するソースとシンクを指定します。
    • ソース: CSVファイル

      この例では、ソース・ファイルはcourse.csvです

      
      cat [~/nosql-migrator-1.5.0]/course.csv
      1,"Computer Science", "San Francisco", "2500"
      2,"Bio-Technology", "Los Angeles", "1200"
      3,"Journalism", "Las Vegas", "1500"
      4,"Telecommunication", "San Francisco", "2500"
      
    • シンク: Oracle NoSQL Database
  • CSVファイルはRFC4180形式に準拠している必要があります。
  • ターゲット表courseのスキーマのDDLコマンドを含むファイルを作成します。表定義は、列数とそのタイプに関するCSVデータ・ファイルと一致する必要があります。

    この例では、DDLファイルはmytable_schema.DDLです

    
    cat [~/nosql-migrator-1.5.0]/mytable_schema.ddl
    create table course (id INTEGER, name STRING, location STRING, fees INTEGER, PRIMARY KEY(id));
    
手順
CSVファイル・データをcourse.CSVからOracle NoSQL Database Serviceに移行するには、次のステップを実行します:
  1. コマンド・プロンプトを開き、Oracle NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。
  2. Oracle NoSQL Database Migratorを使用して構成ファイルを生成するには、ランタイム・パラメータを指定せずにrunMigratorコマンドを実行します。
    [~/nosql-migrator-1.5.0]$./runMigrator
  3. ランタイム・パラメータとして構成ファイルを指定しなかったため、構成を今すぐ生成するかどうかを尋ねるプロンプトが表示されます。「y」と入力します。
    構成ファイルの場所を選択することも、[Enter]キーを押してデフォルトの場所を保持することもできます。
    
    Configuration file is not provided. Do you want to generate
    configuration? (y/n) [n]: y
    Generating a configuration file interactively.
    
    Enter a location for your config [./migrator-config.json]: 
    ./migrator-config.json already exist. Do you want to overwrite?(y/n) [n]: y
    
  4. ユーティリティのプロンプトに基づいて、ソース構成のオプションを選択します。
    
    Select the source: 
    1) nosqldb
    2) nosqldb_cloud
    3) file
    4) object_storage_oci
    5) aws_s3
    #? 3
    
    Configuration for source type=file
    Select the source file format: 
    1) json
    2) mongodb_json
    3) dynamodb_json
    4) csv
    #? 4
    
  5. ソースCSVファイルへのパスを指定します。さらに、ユーティリティからのプロンプトに基づいて、列名の順序変更、エンコーディング方法の選択、ターゲット表からの末尾のスペースの切捨てを選択できます。
    
    Enter path to a file or directory containing csv data: [~/nosql-migrator-1.5.0]/course.csv
    Does the CSV file contain a headerLine? (y/n) [n]: n
    Do you want to reorder the column names of NoSQL table with respect to
    CSV file columns? (y/n) [n]: n
    Provide the CSV file encoding. The supported encodings are:
    UTF-8,UTF-16,US-ASCII,ISO-8859-1. [UTF-8]: 
    Do you want to trim the tailing spaces? (y/n) [n]: n
    
  6. ユーティリティのプロンプトに基づいて、シンク構成のオプションを選択します。
    
    Select the sink:
    1) nosqldb
    2) nosqldb_cloud
    #? 1
    Configuration for sink type=nosqldb
    Enter store name of the Oracle NoSQL Database: mystore
    Enter comma separated list of host:port of Oracle NoSQL Database: <hostname>:5000
    
  7. ユーティリティからのプロンプトに基づいて、ターゲット表の名前を指定します。
    
    Enter fully qualified table name: course
    
  8. 選択を入力してTTL値を設定します。デフォルト値はnです。
    
    Include TTL data? If you select 'yes' TTL value provided by the
    source will be set on imported rows. (y/n) [n]: n
    
  9. ユーティリティからのプロンプトに基づいて、Oracle NoSQL Database Migratorツールを使用してターゲット表を作成する必要があるかどうかを指定します。表がすでに作成されている場合は、nを指定することをお薦めします。表が作成されない場合、ユーティリティは、ターゲット表のスキーマに対するDDLコマンドを含むファイルのパスをリクエストします。
    
    Would you like to create table as part of migration process?
    Use this option if you want to create table through the migration tool.
    If you select yes, you will be asked to provide a file that contains
    table DDL or to use schema provided by the source or default schema.
    (y/n) [n]: y
    Enter path to a file containing table DDL: [~/nosql-migrator-1.5.0]/mytable_schema.ddl
    Is the store secured? (y/n) [y]: n
    would you like to overwrite records which are already present?
    If you select 'no' records with same primary key will be skipped [y/n] [y]: y
    Enter store operation timeout in milliseconds. [5000]:
    Would you like to add transformations to source data? (y/n) [n]: n
    
  10. レコードの移行に失敗した場合に移行を続行するかどうかを決定するための選択肢を入力します。
    
    Would you like to continue migration if any data fails to be migrated? 
    (y/n) [n]: n
    
  11. 生成された構成が画面に表示されます。
    
    Generated configuration is:
    {
      "source" : {
        "type" : "file",
        "format" : "csv",
        "dataPath" : "[~/nosql-migrator-1.5.0]/course.csv",
        "hasHeader" : false,
        "csvOptions" : {
          "encoding" : "UTF-8",
          "trim" : false
        }
      },
      "sink" : {
        "type" : "nosqldb",
        "storeName" : "mystore",
        "helperHosts" : ["<hostname>:5000"],
        "table" : "migrated_table",
        "query" : "",
        "includeTTL" : false,
        "schemaInfo" : {
          "schemaPath" : "[~/nosql-migrator-1.5.0]/mytable_schema.ddl"
        },
        "overwrite" : true,
        "requestTimeoutMs" : 5000
      },
      "abortOnError" : true,
      "migratorVersion" : "1.5.0"
    }
    
  12. 最後に、生成された構成ファイルを使用して移行を続行するかどうかを指定するよう求められます。デフォルト・オプションはyです。
    ノート: nを選択した場合、生成された構成ファイルを使用して移行を実行できます。./runMigrator -cまたは./runMigrator --configオプションを指定します。
    
    Would you like to run the migration with above configuration?
    If you select no, you can use the generated configuration file to
    run the migration using:
    ./runMigrator --config ./migrator-config.json
    (y/n) [y]: y
    
    
  13. NoSQL Database Migratorが、CSVファイルからOracle NoSQL Databaseにデータをコピーします。
    
    creating source from given configuration:
    source creation completed
    creating sink from given configuration:
    sink creation completed
    creating migrator pipeline
    migration started
    [nosqldb sink] : start loading DDLs
    [nosqldb sink] : executing DDL: create table course (id INTEGER, name STRING, location STRING, fees INTEGER, PRIMARY KEY(id))
    [nosqldb sink] : completed loading DDLs
    [nosqldb sink] : start loading records
    [csv file source] : start parsing CSV records from file: course.csv
    migration completed. Records provided by source=4, Records written to sink=4, Records failed=0,Records skipped=0.
    Elapsed time: 0min 0sec 559ms
    Migration completed.
    
検証
KVStoreでSQLプロンプトを起動します。
 java -jar lib/sql.jar -helper-hosts localhost:5000 -store kvstore
新しい表がソース・データで作成されていることを確認します。

sql-> select * from course;
{"id":4,"name":"Telecommunication","location":"San Francisco","fees":2500}
{"id":1,"name":"Computer Science","location":"San Francisco","fees":2500}
{"id":2,"name":"Bio-Technology","location":"Los Angeles","fees":1200}
{"id":3,"name":"Journalism","location":"Las Vegas","fees":1500}
 
4 rows returned