从PostgreSQL导出大型数据集(JSON)

时间:2018-09-11 14:00:10

标签: postgresql postgis large-data

我有一个包含地理空间数据的postgres数据库,我想将其中的某些部分导出为GeoJSON。

所以我有一个如下的SQL命令:

<ListView x:Name="Lista"  
          SeparatorColor="Gray" 
          SeparatorVisibility="Default" 
          HasUnevenRows="True" 
          VerticalOptions="FillAndExpand" >
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout>
                    <StackLayout Orientation="Horizontal" >
                        <StackLayout Orientation="Horizontal" 
                                     HorizontalOptions="FillAndExpand">
                            <StackLayout>
                                <Label Text="{Bindenter code hereing entityName}" 
                                       TextColor="White" 
                                       Font="14"/>
                                <Label Text="{Binding cmPaymentDate}" 
                                       TextColor="White" 
                                       Font="14"/>
                                <Label Text="{Binding statusDescr}" 
                                       TextColor="White"
                                       Font="14"/>
                            </StackLayout>
                            <StackLayout HorizontalOptions="EndAndExpand">
                                <Button x:Name="cmdOpen" 
                                        Text="Open pdf" />
                                <Label Text="{Binding paymentAmount}" 
                                       TextColor="White"
                                       Font="14" 
                                       HorizontalOptions="End" />
                                <Label Text="{Binding paymentNumber}" 
                                       TextColor="White" 
                                       Font="10" 
                                       HorizontalOptions="End" />
                            </StackLayout>
                        </StackLayout>
                    </StackLayout>
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

,基本上可以正常工作。我还可以将其保存到文件中,然后直接将其转储到文件中,如下所示:

SELECT jsonb_build_object ( 'some_test_data', jsonb_agg (ST_AsGeoJSON (ST_Transform (way, 4326))::jsonb)) as json
FROM (
  SELECT way, name, highway
  FROM planet_osm_line
  LIMIT 10) result

所以我的数据是正确且可用的,但是现在我想删除psql -qtAX -d my-database -f my_cool_sql_command.sql > result.json 并得到LIMIT 10

我读到要删除PostgreSQL的256MB限制并不容易...但是我想还有其他方法可以得到我的结果?

1 个答案:

答案 0 :(得分:0)

尝试缩小文件的方法是使用st_simplify()和json_build_object()简化几何(限制为1 GB(与文本限制相同),而不是二进制文件为256 MB)

SELECT json_build_object('some_test_data', json_agg (ST_AsGeoJSON (ST_Transform (way, 4326))::json)) as json
  FROM (SELECT st_simplify(way,1) way, name, highway
          FROM planet_osm_line) result

您可以简化1米,然后简化为1米,通常不会丢失图形上的任何重要顶点。