Импортировать большой файл CSV в PostGIS

12

Я пытаюсь импортировать файлы CSV в PostGIS. После этого поста я уже создавал таблицы. Я нашел другие предложения о том, что я могу запустить команду копирования.

Если я запускаю эту команду:

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;

но тоже не сработало.

Пример такого набора данных можно скачать по этой ссылке :

Должен ли я создать модель, а затем выполнить ее?

user3001937
источник
3
Вы пробовалиCOPY moulding FROM '/Users/macbook/file.csv' DELIMITERS ',' CSV HEADER;
Подземье
У вас есть таблица с именем tableв вашей общедоступной схеме?
Луис де Соуза
Нет! Я пытаюсь импортировать этот файл, используя функцию копирования.
user3001937
Вы действительно используете CSV или Shapefile? Ваш вопрос говорит CSV, но образец shp ... Кроме того, какую версию postgis вы используете?
BradHards
@BradHards: если вы скачаете файл, я найду файл с расширением CSV. Я использую последнюю версию Postgis. psql (9.3.1, сервер 9.3.2)
user3001937

Ответы:

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;

Затем вам нужно будет создать индексы и геометрию

tjmgis
источник
4

Это также можно сделать с помощью GDAL с использованием файла .vrt, хотя это может занимать много памяти.

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

Для полного руководства смотрите:

Загрузка данных CodePoint CSV OS в PostGIS

HeikkiVesanto
источник