euccas
4/21/2016 - 11:00 PM

[runy] postgresql JSONB

postgresql JSONB

require 'pg'
require 'json'

def db_connect(host, dbname, user, password)
  begin
    conn = PGconn.connect(host, 5436, '', '', dbname, user, password)
  rescue
    puts "Failed to connect to database #{dbname} on #{host}"
  end
  return conn
end

# connect vCloud database
puts 'Connect to AIR database'
db_conn_vcloud = db_connect('dbpgvcloudprd01', 'vcloud', 'rebo', 'rebo')
if db_conn_vcloud == nil
  puts 'Failed to connect to vCloud database'
  exit(1)
end
puts '... ok'

table_name = 'air_a530_releases'

my_hash = Hash.new
my_hash[:hlm] = Hash.new
my_hash[:hlm] = {:version => '111', :owner => 'euchen'}
my_hash[:driver] = Hash.new
my_hash[:driver] = {:version => '222', :owner => 'asdf'}

new_data = JSON.generate(my_hash)
puts new_data

new_time = Time.now

sql_query =<<-END_SQL_QUERY.gsub(/\s+/, ' ').strip
  INSERT INTO #{table_name}
  (delivery_time, data)
  VALUES (\'#{new_time}\', \'#{new_data}\')
END_SQL_QUERY
puts "SQL query: #{sql_query}"

res = db_conn_vcloud.exec(sql_query)

puts "cmd_status: #{res.cmd_status}"

sql_query =<<-END_SQL_QUERY.gsub(/\s+/, ' ').strip
  SELECT data FROM #{table_name}
END_SQL_QUERY
puts "SQL query: #{sql_query}"
res = db_conn_vcloud.exec(sql_query)
puts "result"
res.each do |r|
  result_hash = JSON.parse(r['data'])
  result_hash.each do |k, v|
    puts "#{k}: #{v}"
  end
end