PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Създайте Postgresql таблица от Avro Schema в Nifi

Мога да предложа ExecuteGroovyScript процесор в nifi v1.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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да се присъединя с получена таблица?

  2. Функции с променлив брой входни параметри

  3. Как да предотвратим състоянието на състезание в Django при INSERT с ограничаване на SUM?

  4. Как да разделя String и да го вмъкна като нов ред в същата таблица?

  5. Сума от времевата разлика между редовете