cartodb-importer 0.2.13 → 0.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/cartodb-importer/importer.rb +31 -1
- data/lib/cartodb-importer/version.rb +1 -1
- data/spec/import_spec.rb +37 -0
- metadata +22 -22
| @@ -209,6 +209,36 @@ module CartoDB | |
| 209 209 | 
             
                      end
         | 
| 210 210 | 
             
                    end
         | 
| 211 211 |  | 
| 212 | 
            +
                    #Now, if there is a ltitude and longitude column, lets create a the_geom for it
         | 
| 213 | 
            +
                    latitude_possible_names = "'latitude','lat','latitudedecimal','latitud','lati'"
         | 
| 214 | 
            +
                    longitude_possible_names = "'longitude','lon','lng','longitudedecimal','longitud','long'"
         | 
| 215 | 
            +
                    
         | 
| 216 | 
            +
                    matching_latitude = nil
         | 
| 217 | 
            +
                    res = @db_connection["select column_name from information_schema.columns where table_name ='#{@suggested_name}' 
         | 
| 218 | 
            +
                      and lower(column_name) in (#{latitude_possible_names}) LIMIT 1"]
         | 
| 219 | 
            +
                    if !res.first.nil?
         | 
| 220 | 
            +
                      matching_latitude= res.first[:column_name]
         | 
| 221 | 
            +
                    end
         | 
| 222 | 
            +
                    matching_longitude = nil
         | 
| 223 | 
            +
                    res = @db_connection["select column_name from information_schema.columns where table_name ='#{@suggested_name}' 
         | 
| 224 | 
            +
                      and lower(column_name) in (#{longitude_possible_names}) LIMIT 1"]
         | 
| 225 | 
            +
                    if !res.first.nil?
         | 
| 226 | 
            +
                      matching_longitude= res.first[:column_name]
         | 
| 227 | 
            +
                    end        
         | 
| 228 | 
            +
                    
         | 
| 229 | 
            +
                    
         | 
| 230 | 
            +
                    if matching_latitude and matching_longitude
         | 
| 231 | 
            +
                        #we know there is a latitude/longitude columns
         | 
| 232 | 
            +
                        @db_connection.run("SELECT AddGeometryColumn('#{@suggested_name}','the_geom',4326, 'POINT', 2);")
         | 
| 233 | 
            +
                        @db_connection.run("UPDATE \"#{@suggested_name}\" SET the_geom = ST_GeomFromText('POINT('|| \"#{matching_longitude}\" ||' '|| \"#{matching_latitude}\" ||')',4326)
         | 
| 234 | 
            +
                          WHERE \"#{matching_longitude}\" IS NOT NULL AND \"#{matching_latitude}\" IS NOT NULL AND \"#{matching_longitude}\"<>'' AND \"#{matching_latitude}\"<>''")
         | 
| 235 | 
            +
                        @db_connection.run("CREATE INDEX \"#{@suggested_name}_the_geom_gist\" ON \"#{@suggested_name}\" USING GIST (the_geom)")
         | 
| 236 | 
            +
                    end
         | 
| 237 | 
            +
                    
         | 
| 238 | 
            +
                    
         | 
| 239 | 
            +
                    
         | 
| 240 | 
            +
                    
         | 
| 241 | 
            +
                    
         | 
| 212 242 | 
             
                    @table_created = true
         | 
| 213 243 |  | 
| 214 244 | 
             
                    FileUtils.rm_rf(path)
         | 
| @@ -253,7 +283,7 @@ module CartoDB | |
| 253 283 | 
             
                        @db_connection.run("ALTER TABLE #{random_table_name} RENAME COLUMN the_geom TO the_geom_orig;")
         | 
| 254 284 | 
             
                        geom_type = @db_connection["SELECT GeometryType(the_geom_orig) as type from #{random_table_name} LIMIT 1"].first[:type]
         | 
| 255 285 | 
             
                        @db_connection.run("SELECT AddGeometryColumn('#{random_table_name}','the_geom',4326, '#{geom_type}', 2);")
         | 
| 256 | 
            -
                        @db_connection.run("UPDATE \"#{random_table_name}\" SET the_geom = ST_Transform(the_geom_orig, 4326)")
         | 
| 286 | 
            +
                        @db_connection.run("UPDATE \"#{random_table_name}\" SET the_geom = ST_Force_2D(ST_Transform(the_geom_orig, 4326))")
         | 
| 257 287 | 
             
                        @db_connection.run("ALTER TABLE #{random_table_name} DROP COLUMN the_geom_orig")
         | 
| 258 288 | 
             
                        @db_connection.run("CREATE INDEX \"#{random_table_name}_the_geom_gist\" ON \"#{random_table_name}\" USING GIST (the_geom)")
         | 
| 259 289 | 
             
                      rescue Exception => msg  
         | 
    
        data/spec/import_spec.rb
    CHANGED
    
    | @@ -333,4 +333,41 @@ describe CartoDB::Importer do | |
| 333 333 | 
             
                  result.import_type.should == '.shp'
         | 
| 334 334 | 
             
                end
         | 
| 335 335 | 
             
              end  
         | 
| 336 | 
            +
              
         | 
| 337 | 
            +
              describe "Import KML" do
         | 
| 338 | 
            +
                it "should import a KML ZIP file" do
         | 
| 339 | 
            +
                  importer = CartoDB::Importer.new :import_from_file => File.expand_path("../support/data/states.kml.zip", __FILE__),
         | 
| 340 | 
            +
                                                   :database => "cartodb_importer_test", :username => 'postgres', :password => '',
         | 
| 341 | 
            +
                                                   :host => 'localhost', :port => 5432
         | 
| 342 | 
            +
                  result = importer.import!
         | 
| 343 | 
            +
                  #result.rows_imported.should == 312
         | 
| 344 | 
            +
                  #result.import_type.should == '.shp'
         | 
| 345 | 
            +
                end
         | 
| 346 | 
            +
              end  
         | 
| 347 | 
            +
              
         | 
| 348 | 
            +
              describe "Import CSV with latidude/logitude" do
         | 
| 349 | 
            +
                it "should import estaciones2.csv" do
         | 
| 350 | 
            +
                  importer = CartoDB::Importer.new :import_from_file => File.expand_path("../support/data/walmart.csv", __FILE__),
         | 
| 351 | 
            +
                                               :database => "cartodb_importer_test", :username => 'postgres', :password => '',
         | 
| 352 | 
            +
                                               :host => 'localhost', :port => 5432, :suggested_name => 'walmart'
         | 
| 353 | 
            +
                  result = importer.import!
         | 
| 354 | 
            +
                  result.name.should == 'walmart'
         | 
| 355 | 
            +
                  #result.rows_imported.should == 30
         | 
| 356 | 
            +
                  result.import_type.should == '.csv'
         | 
| 357 | 
            +
                end
         | 
| 358 | 
            +
              end
         | 
| 359 | 
            +
              
         | 
| 360 | 
            +
              describe "Import CSV with lat/lon" do
         | 
| 361 | 
            +
                it "should import estaciones2.csv" do
         | 
| 362 | 
            +
                  importer = CartoDB::Importer.new :import_from_file => File.expand_path("../support/data/walmart_latlon.csv", __FILE__),
         | 
| 363 | 
            +
                                               :database => "cartodb_importer_test", :username => 'postgres', :password => '',
         | 
| 364 | 
            +
                                               :host => 'localhost', :port => 5432, :suggested_name => 'walmart_latlon'
         | 
| 365 | 
            +
                  result = importer.import!
         | 
| 366 | 
            +
                  result.name.should == 'walmart_latlon'
         | 
| 367 | 
            +
                  #result.rows_imported.should == 30
         | 
| 368 | 
            +
                  result.import_type.should == '.csv'
         | 
| 369 | 
            +
                end
         | 
| 370 | 
            +
              end  
         | 
| 371 | 
            +
              
         | 
| 372 | 
            +
              
         | 
| 336 373 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: cartodb-importer
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.14
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -11,11 +11,11 @@ authors: | |
| 11 11 | 
             
            autorequire: 
         | 
| 12 12 | 
             
            bindir: bin
         | 
| 13 13 | 
             
            cert_chain: []
         | 
| 14 | 
            -
            date: 2011- | 
| 14 | 
            +
            date: 2011-10-03 00:00:00.000000000Z
         | 
| 15 15 | 
             
            dependencies:
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 17 17 | 
             
              name: pg
         | 
| 18 | 
            -
              requirement: & | 
| 18 | 
            +
              requirement: &70348306305600 !ruby/object:Gem::Requirement
         | 
| 19 19 | 
             
                none: false
         | 
| 20 20 | 
             
                requirements:
         | 
| 21 21 | 
             
                - - ~>
         | 
| @@ -23,10 +23,10 @@ dependencies: | |
| 23 23 | 
             
                    version: '0.11'
         | 
| 24 24 | 
             
              type: :runtime
         | 
| 25 25 | 
             
              prerelease: false
         | 
| 26 | 
            -
              version_requirements: * | 
| 26 | 
            +
              version_requirements: *70348306305600
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: sequel
         | 
| 29 | 
            -
              requirement: & | 
| 29 | 
            +
              requirement: &70348306288700 !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                none: false
         | 
| 31 31 | 
             
                requirements:
         | 
| 32 32 | 
             
                - - ! '>='
         | 
| @@ -34,10 +34,10 @@ dependencies: | |
| 34 34 | 
             
                    version: '0'
         | 
| 35 35 | 
             
              type: :runtime
         | 
| 36 36 | 
             
              prerelease: false
         | 
| 37 | 
            -
              version_requirements: * | 
| 37 | 
            +
              version_requirements: *70348306288700
         | 
| 38 38 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 39 39 | 
             
              name: roo
         | 
| 40 | 
            -
              requirement: & | 
| 40 | 
            +
              requirement: &70348306287760 !ruby/object:Gem::Requirement
         | 
| 41 41 | 
             
                none: false
         | 
| 42 42 | 
             
                requirements:
         | 
| 43 43 | 
             
                - - ! '>='
         | 
| @@ -45,10 +45,10 @@ dependencies: | |
| 45 45 | 
             
                    version: '0'
         | 
| 46 46 | 
             
              type: :runtime
         | 
| 47 47 | 
             
              prerelease: false
         | 
| 48 | 
            -
              version_requirements: * | 
| 48 | 
            +
              version_requirements: *70348306287760
         | 
| 49 49 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 50 50 | 
             
              name: spreadsheet
         | 
| 51 | 
            -
              requirement: & | 
| 51 | 
            +
              requirement: &70348306287120 !ruby/object:Gem::Requirement
         | 
| 52 52 | 
             
                none: false
         | 
| 53 53 | 
             
                requirements:
         | 
| 54 54 | 
             
                - - ! '>='
         | 
| @@ -56,10 +56,10 @@ dependencies: | |
| 56 56 | 
             
                    version: '0'
         | 
| 57 57 | 
             
              type: :runtime
         | 
| 58 58 | 
             
              prerelease: false
         | 
| 59 | 
            -
              version_requirements: * | 
| 59 | 
            +
              version_requirements: *70348306287120
         | 
| 60 60 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 61 61 | 
             
              name: google-spreadsheet-ruby
         | 
| 62 | 
            -
              requirement: & | 
| 62 | 
            +
              requirement: &70348306286400 !ruby/object:Gem::Requirement
         | 
| 63 63 | 
             
                none: false
         | 
| 64 64 | 
             
                requirements:
         | 
| 65 65 | 
             
                - - ! '>='
         | 
| @@ -67,10 +67,10 @@ dependencies: | |
| 67 67 | 
             
                    version: '0'
         | 
| 68 68 | 
             
              type: :runtime
         | 
| 69 69 | 
             
              prerelease: false
         | 
| 70 | 
            -
              version_requirements: * | 
| 70 | 
            +
              version_requirements: *70348306286400
         | 
| 71 71 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 72 72 | 
             
              name: rubyzip
         | 
| 73 | 
            -
              requirement: & | 
| 73 | 
            +
              requirement: &70348306285500 !ruby/object:Gem::Requirement
         | 
| 74 74 | 
             
                none: false
         | 
| 75 75 | 
             
                requirements:
         | 
| 76 76 | 
             
                - - ! '>='
         | 
| @@ -78,10 +78,10 @@ dependencies: | |
| 78 78 | 
             
                    version: '0'
         | 
| 79 79 | 
             
              type: :runtime
         | 
| 80 80 | 
             
              prerelease: false
         | 
| 81 | 
            -
              version_requirements: * | 
| 81 | 
            +
              version_requirements: *70348306285500
         | 
| 82 82 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 83 83 | 
             
              name: builder
         | 
| 84 | 
            -
              requirement: & | 
| 84 | 
            +
              requirement: &70348306284860 !ruby/object:Gem::Requirement
         | 
| 85 85 | 
             
                none: false
         | 
| 86 86 | 
             
                requirements:
         | 
| 87 87 | 
             
                - - ! '>='
         | 
| @@ -89,10 +89,10 @@ dependencies: | |
| 89 89 | 
             
                    version: '0'
         | 
| 90 90 | 
             
              type: :runtime
         | 
| 91 91 | 
             
              prerelease: false
         | 
| 92 | 
            -
              version_requirements: * | 
| 92 | 
            +
              version_requirements: *70348306284860
         | 
| 93 93 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 94 94 | 
             
              name: rspec
         | 
| 95 | 
            -
              requirement: & | 
| 95 | 
            +
              requirement: &70348306284240 !ruby/object:Gem::Requirement
         | 
| 96 96 | 
             
                none: false
         | 
| 97 97 | 
             
                requirements:
         | 
| 98 98 | 
             
                - - ! '>='
         | 
| @@ -100,10 +100,10 @@ dependencies: | |
| 100 100 | 
             
                    version: '0'
         | 
| 101 101 | 
             
              type: :development
         | 
| 102 102 | 
             
              prerelease: false
         | 
| 103 | 
            -
              version_requirements: * | 
| 103 | 
            +
              version_requirements: *70348306284240
         | 
| 104 104 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 105 105 | 
             
              name: mocha
         | 
| 106 | 
            -
              requirement: & | 
| 106 | 
            +
              requirement: &70348306283580 !ruby/object:Gem::Requirement
         | 
| 107 107 | 
             
                none: false
         | 
| 108 108 | 
             
                requirements:
         | 
| 109 109 | 
             
                - - ! '>='
         | 
| @@ -111,10 +111,10 @@ dependencies: | |
| 111 111 | 
             
                    version: '0'
         | 
| 112 112 | 
             
              type: :development
         | 
| 113 113 | 
             
              prerelease: false
         | 
| 114 | 
            -
              version_requirements: * | 
| 114 | 
            +
              version_requirements: *70348306283580
         | 
| 115 115 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 116 116 | 
             
              name: ruby-debug19
         | 
| 117 | 
            -
              requirement: & | 
| 117 | 
            +
              requirement: &70348306282880 !ruby/object:Gem::Requirement
         | 
| 118 118 | 
             
                none: false
         | 
| 119 119 | 
             
                requirements:
         | 
| 120 120 | 
             
                - - ! '>='
         | 
| @@ -122,7 +122,7 @@ dependencies: | |
| 122 122 | 
             
                    version: '0'
         | 
| 123 123 | 
             
              type: :development
         | 
| 124 124 | 
             
              prerelease: false
         | 
| 125 | 
            -
              version_requirements: * | 
| 125 | 
            +
              version_requirements: *70348306282880
         | 
| 126 126 | 
             
            description: Import CSV, SHP, and other files with data into a PostgreSQL table
         | 
| 127 127 | 
             
            email:
         | 
| 128 128 | 
             
            - andrew@vizzuality.com
         |