Nhập tệp CSV lớn vào PostGIS


12

Tôi đang cố gắng nhập tệp CSV vào PostGIS. Theo dõi bài này , tôi đã tạo các bảng trước đó. Tôi tìm thấy các đề xuất khác nói rằng tôi có thể chạy lệnh sao chép.

Nếu tôi chạy lệnh này:

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

nó không sao chép bảng cả. Nó nói rằng "bảng" không được công nhận.

Tôi đã thử điều này:

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;

nhưng cũng không hoạt động.

Một ví dụ về tập dữ liệu như vậy có thể được tải xuống từ liên kết này :

Tôi có nên tạo một mô hình và sau đó thực hiện nó?


3
Bạn đã thử chưaCOPY moulding FROM '/Users/macbook/file.csv' DELIMITERS ',' CSV HEADER;
underdark

Bạn có một bảng có tên tabletrong lược đồ công cộng của bạn?
Luís de Sousa

Không! Tôi đang cố gắng nhập tệp đó bằng chức năng Sao chép.
dùng3001937

Bạn có thực sự sử dụng CSV hoặc Shapefile? Câu hỏi của bạn nói CSV, nhưng mẫu là shp ... Ngoài ra, bạn đang sử dụng phiên bản postgis nào?
BradHards

@BradHards: Nếu bạn tải xuống tệp, tôi tìm thấy tệp có phần mở rộng CSV. Tôi sử dụng phiên bản mới nhất của Postgis. psql (9.3.1, máy chủ 9.3.2)
user3001937

Câu trả lời:


10

Bạn gần như ở đó nhưng tôi nghĩ vấn đề có thể là bảng bạn đang tải vào.

Bạn phải có một bảng được tạo trong PostGIS với các loại cột chính xác

Ví dụ

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

Nhưng bạn cần khớp loại cột với cùng loại dữ liệu trong CSV.

Bạn có thể xem tất cả các loại dữ liệu tại đây http://www.postgresql.org/docs/9.1/static/datatype.html

Khi bạn đã tạo bảng, bạn có thể sử dụng lệnh gốc

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

Sau đó, bạn sẽ cần tạo các chỉ mục và hình học


4

Điều này cũng có thể được thực hiện với GDAL bằng cách sử dụng tệp .vrt, mặc dù nó có thể tốn nhiều bộ nhớ.

Bạn vrt sẽ trông như:

<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> 

Sau đó, đơn giản là:

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

Để được hướng dẫn đầy đủ, xem:

Đang tải dữ liệu Mã hệ điều hành CSV vào PostGIS

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.