Імпортуйте великий файл 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у вас загальнодоступна схема, названа в таблиці ?
Luís de Sousa

Немає ! Я намагаюся імпортувати цей файл за допомогою функції "Копіювати".
користувач3001937

Ви справді використовуєте CSV або Shapefile? У вашому запитанні написано CSV, але зразок є шп ... Крім того, яку версію поштових повідомлень ви використовуєте?
BradHards

@BradHards: Якщо ви завантажите файл, я знайду файл із розширенням CSV. Я використовую останню версію Postgis. psql (9.3.1, сервер 9.3.2)
користувач3001937

Відповіді:


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

Це також можна зробити за допомогою 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.