sql >> データベース >  >> RDS >> PostgreSQL

NifiのAvroスキーマからPostgresqlテーブルを作成します

    ExecuteGroovyScriptを提案できます nifiv1.5+のプロセッサ

    新しいプロパティSQL.mydbを定義します -その値をデータベースにリンクするように求められます(DBCPConnectionPool

    テーブルを作成するデータベースを選択します

    このスクリプトを使用します(avroスキーマがフローファイルのコンテンツに含まれていると想定します)

    import groovy.json.JsonSlurper
    
    def ff = session.get()
    if(!ff)return
    
    //parse avro schema from flow file content
    def schema = ff.read().withReader("UTF-8"){ new JsonSlurper().parse(it) }
    
    //define type mapping
    def typeMap = [
        "string"            : "varchar(255)",
        "long"              : "numeric(10)",
        [ "null", "string" ]: "varchar(255)",
        [ "null", "long" ]  : "numeric(10)",
    ]
    
    assert schema.name && schema.name=~/^\w.*/
    
    //build create table statement
    def createTable = "create table ${schema.name} (" +
        schema.fields.collect{ "\n  ${it.name.padRight(39)} ${typeMap[it.type]}" }.join(',') +
        "\n)"
    
    //execute statement through the custom defined property
    //SQL.mydb references http://docs.groovy-lang.org/2.4.10/html/api/groovy/sql/Sql.html object
    SQL.mydb.execute(createTable as String) //important to cast to String
    
    //transfer flow file to success
    REL_SUCCESS << ff
    



    1. ElasticBeanstalkのpsycopg2-アプリをデプロイできません

    2. OracleBIPublisherで数値を単語に変換する

    3. T-SQLを使用してSQLServerのCHECK制約の名前を変更します

    4. com.zaxxer.hikari.pool.PoolInitializationException:プールの初期化中の例外