2016-05-12 4 views
0

の位置の列(PostGISの地理的な列)に.csvファイルを使用してlon/lat値を取得し、アクティブRubyコードを使用してデータベースに問い合わせる-record-postgis-adapter。.csvとアクティブレコードポストアダプタを使用して地理的な列を塗りつぶす

私はすでに私のコラムを埋めるために働く短いSQLコードを持っているが、私は(.csvファイルではなく)私は経度を取ることができる方法

ActiveRecord::Base.connection.execute("UPDATE my_table SET location = ST_SetSRID(ST_MakePoint(my_table.longitude, my_table.latitude), 4326)::geography") 

をDBから経度/緯度の値を使用しています/ .csvの各行からの緯度の値をの位置の列に入れますか?

答えて

1

私は100%確信していませんが、最初にcsvデータをステージングテーブルに書き込むことは避けられず、テーブルを満たすためにlat/lngをポイントにコピーして変換することはできないと思います。

ので、SQLでwoleプロセスは次のようになります。

-- Create table for staging your data 
CREATE TABLE public.staging 
(
    lat double precision, 
    lng double precision 
); 

-- Copy data from CSV into staging - adapt the delimiter 
COPY staging FROM '/abs/path/to/your/file.csv' WITH DELIMITER ';'; 

-- Transform and copy to your table 
INSERT INTO my_table (location) 
    SELECT ST_SetSRID(ST_MakePoint(lng, lat), 4326)::geography 
    FROM staging; 

-- If not needed any more, drop staging table 
DROP TABLE staging; 

そして、あなたは、あなたが他の列を持っている場合は、このプロセスを適応する必要があります。