PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tạo bảng Postgresql từ Sơ đồ Avro trong Nifi

Tôi có thể đề xuất ExecuteGroovyScript bộ xử lý trong nifi v1.5 +

xác định thuộc tính mới SQL.mydb - bạn sẽ được nhắc liên kết giá trị của nó với cơ sở dữ liệu (DBCPConnectionPool )

chọn cơ sở dữ liệu mà bạn muốn tạo bảng

và sử dụng tập lệnh này (giả sử lược đồ avro nằm trong nội dung tệp luồng)

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. Đếm số hàng sau khi nối ba bảng trong PostgreSQL

  2. Postgresql - cách lấy các mục nhập trong một bảng không khớp trong bảng khác

  3. Lưu trữ một tệp trong postgres bằng cách sử dụng node-postgres

  4. Sự khác biệt giữa LIKE và ~ trong Postgres

  5. PostgreSQL thay đổi thứ tự các hàng đã trả về