Migración de un archivo CSV a Oracle NoSQL Database

En este ejemplo se muestra el uso de Oracle NoSQL Database Migrator para copiar datos de un archivo CSV en Oracle NoSQL Database.

Ejemplo

Después de evaluar varias opciones, una organización finaliza Oracle NoSQL Database como su plataforma de base de datos NoSQL. Como su contenido de origen está en formato de archivo CSV, están buscando una forma de migrarlos a Oracle NoSQL Database.

En este ejemplo, aprenderá a migrar los datos desde un archivo CSV denominado course.csv, que contiene información sobre varios cursos que ofrece una universidad. El archivo JSON de configuración se genera desde la utilidad runMigrator.

También puede preparar el archivo JSON de configuración con los detalles del origen y del receptor identificados. Consulte Oracle NoSQL Database Migrator Reference.

Requisitos previos
  • Identifique el origen y el receptor de la migración.
    • Origen: archivo CSV

      En este ejemplo, el archivo de origen es 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"
      
    • Enlace: Oracle NoSQL Database
  • El archivo CSV debe cumplir con el formato RFC4180.
  • Cree un archivo que contenga los comandos DDL para el esquema de la tabla de destino, course. La definición de tabla debe coincidir con el archivo de datos CSV relacionado con el número de columnas y sus tipos.

    En este ejemplo, el archivo DDL es 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));
    
Procedimiento
Para migrar los datos del archivo CSV de course.csv a Oracle NoSQL Database Service, realice los siguientes pasos:
  1. Abra el símbolo del sistema y navegue hasta el directorio en el que extrajo la utilidad Oracle NoSQL Database Migrator.
  2. Para generar el archivo JSON de configuración mediante Oracle NoSQL Database Migrator, ejecute el comando runMigrator sin parámetros de tiempo de ejecución.
    [~/nosql-migrator-1.5.0]$./runMigrator
  3. Como no proporcionó el archivo de configuración como parámetro de tiempo de ejecución, la utilidad solicita si desea generar la configuración ahora. Escriba y.
    Puede seleccionar una ubicación para el archivo de configuración o conservar la ubicación por defecto pulsando Enter key.
    
    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. En función de las peticiones de datos de la utilidad, seleccione las opciones para la configuración de origen.
    
    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. Proporcione la ruta al archivo CSV de origen. Además, según las indicaciones de la utilidad, puede reordenar los nombres de columna, seleccionar el método de codificación y recortar los espacios de ajuste de la tabla de destino.
    
    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. Según las peticiones de datos de la utilidad, seleccione las opciones para la configuración de enlace.
    
    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. Según las peticiones de datos de la utilidad, proporcione el nombre de la tabla de destino.
    
    Enter fully qualified table name: course
    
  8. Introduzca su elección para definir el valor de TTL. El valor por defecto es 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. En función de las peticiones de datos de la utilidad, especifique si la tabla de destino se debe crear o no mediante la herramienta Oracle NoSQL Database Migrator. Si la tabla ya se ha creado, se recomienda proporcionar n. Si no se crea la tabla, la utilidad solicitará la ruta del archivo que contiene los comandos DDL para el esquema de la tabla de destino.
    
    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. Introduzca su elección para determinar si desea continuar con la migración en caso de que algún registro no pueda migrar.
    
    Would you like to continue migration if any data fails to be migrated? 
    (y/n) [n]: n
    
  11. La utilidad muestra la configuración generada en la pantalla.
    
    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. Por último, la utilidad le solicita que especifique si desea continuar o no con la migración mediante el archivo de configuración generado. La opción por defecto es y.
    Nota: si selecciona n, puede utilizar el archivo de configuración generado para realizar la migración. Especifique la opción ./runMigrator -c o ./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 copia los datos del archivo CSV en 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.
    
Validación
Inicie la petición de datos SQL en KVStore.
 java -jar lib/sql.jar -helper-hosts localhost:5000 -store kvstore
Verifique que la nueva tabla se ha creado con los datos de origen:

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