sql-server - 如何将 geoJSON 坐标输入到 SQL Server 数据库?
问题描述
我有一个包含 LINESTRING 类型坐标的 geoJSON 文件(非洲的电网)。
我想解析它并作为一种Geography
类型插入到 SQL Server 数据库中(稍后在 Tableau 中可视化)。
使用下面的代码,我可以从 JSON 文件中导入所有值,除了保持为 NULL 的坐标。我应该怎么做才能在坐标列中包含地理类型数据?
DROP TABLE IF EXISTS dbo.testGeographyJSON
GO
CREATE TABLE testGeographyJSON
(
id INT IDENTITY(1,1),
Country NVARCHAR(300),
Operator NVARCHAR(300),
Status NVARCHAR(300),
voltage_kV FLOAT(12),
length_km FLOAT(12),
Coordinates GEOGRAPHY
)
DECLARE @JSON NVARCHAR(MAX)
DECLARE @g GEOGRAPHY;
-- load the geojson into the variable
SELECT @JSON = BulkColumn
FROM OPENROWSET (BULK 'C:\Users\User\Downloads\africagrid20170906final.geojson', SINGLE_CLOB) as JSON
INSERT INTO dbo.testGeographyJSON (Country, Operator, Status, voltage_kV, length_km, Coordinates)
SELECT
Country, Operator, Status,
voltage_kV, length_km,
@g.STBuffer(1).ToString()
FROM
OPENJSON(@JSON, '$.features')
WITH
(Country NVARCHAR(300) '$.properties.country',
Operator NVARCHAR(300) '$.properties.voltage_kV',
Status NVARCHAR(300) '$.properties.status',
voltage_kV FLOAT(12) '$.properties.voltage_kV',
length_km FLOAT(12) '$.properties.length_km'
)
解决方案
推荐阅读
- python - 如何拆分具有不同格式和不同分隔符的名称的列
- c++ - 如何检查 std::cin 是否失败
- python - 当自定义命名空间为对象时,未设置默认 argparse 参数值
- google-bigquery - 具有不同列的 BigQuery 联合表,用空值填充
- yii2 - Yii2通过excel文件更新数据加载时间长
- excel - 列出有条件引用的项目的索引数组
- javascript - eval 在 JavaScript 中是如何工作的?为什么 eval('011+011') 不等于 eval('11+11')
- android - Android多个启动器活动?
- javascript - 使用 Ajax GET 和 access_token 的 Mailchimp API 调用抛出 ERR_ABORTED 401
- python - pycharm 使用 pyside2 TypeError:'NoneType' 对象不可调用