大きなCSVファイルをPostGISにインポートする


12

CSVファイルをPostGISにインポートしようとしています。この投稿に続いて、以前にテーブルを作成しました。copyコマンドを実行できると言っている他の提案を見つけました。

このコマンドを実行した場合:

COPY table FROM '/Users/macbook/file.csv' DELIMITERS ',' CSV HEADER;

テーブルをまったくコピーしませんでした。「テーブル」は認識されないと言います。

私はこれを試しました:

COPY moulding
(Borough,Block,Lot,CD,CT2010,CB2010,SchoolDist,Council,ZipCode,FireComp,PolicePrct,Address,ZoneDist1,ZoneDist2,ZoneDist3,ZoneDist4,Overlay1,Overlay2,SPDist1,SPDist2,LtdHeight,AllZoning1,AllZoning2,SplitZone,BldgClass,LandUse,Easements,OwnerType,OwnerName,LotArea,BldgArea,ComArea,ResArea,OfficeArea,RetailArea,GarageArea,StrgeArea,FactryArea,OtherArea,AreaSource,NumBldgs,NumFloors,UnitsRes,UnitsTotal,LotFront,LotDepth,BldgFront,BldgDepth,Ext,ProxCode,IrrLotCode,LotType,BsmtCode,AssessLand,AssessTot,ExemptLand,ExemptTot,YearBuilt,BuiltCode,YearAlter1,YearAlter2,HistDist,Landmark,BuiltFAR,ResidFAR,CommFAR,FacilFAR,BoroCode,BBL,CondoNo,Tract2010,XCoord,YCoord,ZoneMap,ZMCode,Sanborn,TaxMap,EDesigNum,APPBBL,APPDate,PLUTOMapID,Version)
FROM
'/Users/macbook/file.csv'
DELIMITERS
','
CSV HEADER;

しかし、どちらも機能しませんでした。

このようなデータセットの例は、次のリンクからダウンロードできます。

モデルを作成してから実行する必要がありますか?


3
試してみましたCOPY moulding FROM '/Users/macbook/file.csv' DELIMITERS ',' CSV HEADER;
暗闇

tableパブリックスキーマに名前の付いたテーブルがありますか?
ルイスデスーサ

番号 !コピー機能を使用してそのファイルをインポートしようとしています。
user3001937 14年

本当にCSVまたはShapefileを使用していますか?あなたの質問はCSVですが、サンプルはshpです...また、どのバージョンのpostgisを使用していますか?
BradHards 14年

@BradHards:ファイルをダウンロードすると、CSV拡張子のファイルが見つかります。Postgisの最新バージョンを使用しています。psql(9.3.1、サーバー9.3.2)
user3001937 14年

回答:


10

あなたはほとんどそこにいますが、問題はあなたがロードしているテーブルかもしれないと思います。

PostGISで正しい列タイプを使用してテーブルを作成しておく必要があります

例えば

CREATE TABLE nycdata (
    BOROUGH varchar,
    BLOCK varch,
    DATE date,
    VERSION numeric);

ただし、CSVの同じタイプのデータと列タイプを一致させる必要があります。

ここですべてのデータ型を見ることができますhttp://www.postgresql.org/docs/9.1/static/datatype.html

テーブルを作成したら、元のコマンドを使用できます

COPY nycdata FROM '/Users/macbook/data.csv' DELIMITERS ',' CSV HEADER;

次に、インデックスとジオメトリを作成する必要があります


4

これは.vrtファイルを使用してGDALでも実行できますが、メモリを大量に消費する可能性があります。

vrtは次のようになります。

<OGRVRTDataSource> 
<OGRVRTLayer name="feature_name"> 
    <SrcDataSource>your_csv.csv</SrcDataSource> 
    <GeometryType>wkbPoint</GeometryType> 
    <LayerSRS>EPSG:27700</LayerSRS> 
    <GeometryField encoding="PointFromColumns" x="Eastings" y="Northings"/> 
</OGRVRTLayer> 

それから単に:

ogr2ogr -progress -nln table_name_doesnt_need_to_exist -skipfailures  PostgreSQL PG:"dbname='dbname' host='localhost' port='5432'  user='username' password='password'" vrt_filename.vrt

完全なガイドについては、以下を参照してください。

CSV OS CodePointデータをPostGISに読み込む

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.