Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 9th, 2012  |  syntax: None  |  size: 4.40 KB  |  hits: 14  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. require 'rubygems'
  2. require 'sequel'
  3. require 'lib/jdbc/noarch-ncluster-jdbc-driver.jar'
  4.  
  5. module Sequel
  6.  
  7.   class Dataset
  8.     def quote_schema_table(table)
  9.       schema, table = schema_and_table(table)
  10.       "#{"#{schema}." if schema}#{table}"
  11.     end
  12.   end
  13.  
  14.   class Database
  15.     def quote_schema_table(table)
  16.       schema, table = schema_and_table(table)
  17.       "#{"#{schema}." if schema}#{table}"
  18.     end
  19.     def create_fact_table(name, options={}, &block)
  20.       options[:fact] = true
  21.       create_table(name, options, &block)
  22.     end
  23.  
  24.     def create_dimension_table(name, options={}, &block)
  25.       options[:dimension] = true
  26.       create_table(name, options, &block)
  27.     end
  28.  
  29.     def unquoted_schema_table(table)
  30.       schema, table = schema_and_table(table)
  31.       "#{"#{schema}." if schema}#{table}"
  32.     end
  33.  
  34.     def create_table_sql(name, generator, options)
  35.       if options[:fact]
  36.         "CREATE FACT TABLE #{unquoted_schema_table(name)} (#{column_list_sql(generator)}, PARTITION KEY (\"#{options[:partition_key].to_s.upcase}\") )"
  37.       elsif options[:dimension]
  38.         puts "CREATE DIMENSION TABLE #{unquoted_schema_table(name)} (#{column_list_sql(generator)}) "
  39.         "CREATE DIMENSION TABLE #{unquoted_schema_table(name)} (#{column_list_sql(generator)}) "
  40.       else
  41.         "CREATE #{temporary_table_sql if options[:temp]}TABLE #{quote_schema_table(name)} (#{column_list_sql(generator)}) "
  42.       end
  43.     end
  44.   end
  45.  
  46. end
  47.  
  48.  
  49.  
  50. DB_HOST  = ""
  51. DB_NAME  = ""
  52. DB_USER  = ""
  53. DB_PASSWORD = ""
  54.  
  55. connection_string      = "jdbc:ncluster://%s/%s?user=%s&password=%s" % [DB_HOST,DB_NAME,DB_USER,DB_PASSWORD]
  56. db                     = Sequel.connect(connection_string)
  57.  
  58. if db[:raw_file__demo_demo]
  59.   db.drop_table(:raw_file__demo_demo)
  60. end
  61.  
  62. db.create_dimension_table(:raw_file__demo_demo) do |table|
  63.   String  :foo
  64.   String  :bar
  65. end
  66.  
  67. demo_demo = db[:raw_file__demo_demo]
  68. puts db.schema(:raw_file__demo_demo)
  69. demo_demo.insert(:foo => "WTF", :bar => "HELLO")
  70.  
  71.  
  72.  
  73.  
  74.  
  75. oak-dw-qaetl2.yourmomz.com:/home/dwuser/data_warehouse/etl/UPS_Downloader> jruby test_jdbc.rb
  76. CREATE DIMENSION TABLE raw_file.demo_demo ("FOO" varchar(255), "BAR" varchar(255))
  77. foo
  78. typestringdb_typecharacter varying(255)defaultallow_nulltrueprimary_keyfalsecolumn_size255scale0ruby_default
  79. bar
  80. typestringdb_typecharacter varying(255)defaultallow_nulltrueprimary_keyfalsecolumn_size255scale0ruby_default
  81. com/asterdata/ncluster/core/v3/QueryExecutorImpl.java:2007:in `receiveErrorResponse': NativeException: com.asterdata.ncluster.util.NClusterException: ERROR: relation "RAW_FILE"."DEMO_DEMO" does not \
  82. exist (Sequel::DatabaseError)
  83.         from com/asterdata/ncluster/core/v3/QueryExecutorImpl.java:1734:in `processResults'
  84.         from com/asterdata/ncluster/core/v3/QueryExecutorImpl.java:281:in `execute'
  85.         from com/asterdata/ncluster/jdbc2/AbstractJdbc2Statement.java:453:in `execute'
  86.         from com/asterdata/ncluster/jdbc2/AbstractJdbc2Statement.java:338:in `executeWithFlags'
  87.         from com/asterdata/ncluster/jdbc2/AbstractJdbc2Statement.java:284:in `executeUpdate'
  88.         from /opt/local/jruby-1.5.0/lib/ruby/gems/1.8/gems/sequel-3.13.0/lib/sequel/adapters/jdbc.rb:197:in `execute'
  89.         from /opt/local/jruby-1.5.0/lib/ruby/gems/1.8/gems/sequel-3.13.0/lib/sequel/database/logging.rb:23:in `log_yield'
  90.         from /opt/local/jruby-1.5.0/lib/ruby/gems/1.8/gems/sequel-3.13.0/lib/sequel/adapters/jdbc.rb:196:in `execute'
  91.         from /opt/local/jruby-1.5.0/lib/ruby/gems/1.8/gems/sequel-3.13.0/lib/sequel/adapters/jdbc.rb:441:in `statement'
  92.         from /opt/local/jruby-1.5.0/lib/ruby/gems/1.8/gems/sequel-3.13.0/lib/sequel/adapters/jdbc.rb:188:in `execute'
  93.         from /opt/local/jruby-1.5.0/lib/ruby/gems/1.8/gems/sequel-3.13.0/lib/sequel/connection_pool/threaded.rb:84:in `hold'
  94.         from /opt/local/jruby-1.5.0/lib/ruby/gems/1.8/gems/sequel-3.13.0/lib/sequel/database/connecting.rb:189:in `synchronize'
  95.         from /opt/local/jruby-1.5.0/lib/ruby/gems/1.8/gems/sequel-3.13.0/lib/sequel/adapters/jdbc.rb:187:in `execute'
  96.         from /opt/local/jruby-1.5.0/lib/ruby/gems/1.8/gems/sequel-3.13.0/lib/sequel/adapters/jdbc.rb:222:in `execute_insert'
  97.         from /opt/local/jruby-1.5.0/lib/ruby/gems/1.8/gems/sequel-3.13.0/lib/sequel/dataset/actions.rb:408:in `execute_insert'
  98.         from /opt/local/jruby-1.5.0/lib/ruby/gems/1.8/gems/sequel-3.13.0/lib/sequel/dataset/actions.rb:207:in `insert'
  99.         from test_jdbc.rb:67