当前位置: 首页 > 知识库问答 >
问题:

使用NiFi将空间数据从Oracle(12+)导入HDFS

司徒浩思
2023-03-14

当使用“sdo_util.to_wktgeometrige()”函数将数据类型转换为长字符串时,似乎不可能。对于第一个处理器,第二个处理器会出现错误:“sdo_util.to_wktgeometrion()非法字符”

有人有关于通过NIFI从Oracle(12+)迁移几何数据类型的技巧吗?一个线字符串就足够了几何图形对象的信息(就目前而言)

共有1个答案

谷梁嘉悦
2023-03-14

我想NiFi不知道如何处理关系数据库中定义的任何类型的对象。而对复杂类型如空间类型的理解显然要少得多。即使它确实理解对象类型,您也会遇到一些难以使用的问题,因为它会暴露类型的内部,您需要深入检查Oracle手册以解码内容才能使用这些信息。

最简单的方法无疑是以序列化字符串或二进制表示法获取空间类型。您可以在多个符号和两种获取这些符号的方法之间进行选择:

使用对象类型方法:

SQL> select c.location.get_wkt() from us_cities c where city='New York';

C.LOCATION.GET_WKT()
-------------------------------------------------------------------------------
POINT (-73.943849 40.6698)

1 row selected.
SQL> select c.location.get_gml() from us_cities c where city='New York';

C.LOCATION.GET_GML()
-------------------------------------------------------------------------------
<gml:Point srsName="EPSG:4326" xmlns:gml="http://www.opengis.net/gml"><gml:coordinates decimal="." cs="," ts=" ">-73.943849,40.6698 </gml:coordinates></gml:Point>

1 row selected.
SQL> select c.location.get_geojson() from us_cities c where city='New York';

C.LOCATION.GET_GEOJSON()
-------------------------------------------------------------------------------
{ "type": "Point", "coordinates": [-73.943849, 40.6698] }

1 row selected.

使用函数:

WKT

SQL> select sdo_util.to_wktgeometry(location) from us_cities c where city='New York';

SDO_UTIL.TO_WKTGEOMETRY(LOCATION)
-------------------------------------------------------------------------------
POINT (-73.943849 40.6698)

1 row selected.

GML

SQL> select sdo_util.to_gmlgeometry(location) from us_cities c where city='New York';

SDO_UTIL.TO_GMLGEOMETRY(LOCATION)
-------------------------------------------------------------------------------
<gml:Point srsName="EPSG:4326" xmlns:gml="http://www.opengis.net/gml"><gml:coordinates decimal="." cs="," ts=" ">-73.943849,40.6698 </gml:coordinates></gml:Point>

1 row selected.
SQL> select sdo_util.to_geojson(location) from us_cities c where city='New York';

SDO_UTIL.TO_GEOJSON(LOCATION)
-------------------------------------------------------------------------------
{ "type": "Point", "coordinates": [-73.943849, 40.6698] }

1 row selected.
select city, c.location.sdo_point.x longitude, c.location.sdo_point.y latitude 
from us_cities c;

CITY                            LONGITUDE   LATITUDE
------------------------------ ---------- ----------
New York                       -73.943849    40.6698
Los Angeles                     -118.4112  34.112101
....
Sioux Falls                      -96.7301  43.544201
Simi Valley                     -118.7513   34.26305

195 rows selected.
 类似资料:
  • 我用的是Oracle 10g,SQL Developer我想知道有没有办法从CSV文件导入数据,其中字段用','分隔,行用' \n '结束使用SQL查询我尝试了这个查询 < code >将文件“C:/tmp.csv”中的数据加载到表CSVTEST2字段终止于“,”行终止于“\n”忽略1行(ID,FIRSTNAME,LASTNAME,birth date); 但是它不起作用,我总是从sql开发人员那

  • 问题内容: Hy 我是python的新手,我想使用此简单查询将一些数据从Oracle数据库导入python(pandas数据框) 我做了什么 但是我有这个错误 我做错了什么? 谢谢 问题答案: 您需要正确引用SQL查询。如果您查看问题(或IDE)中突出显示的语法,则会注意到单引号没有按预期工作。 将最外面的引号更改为双引号-如果要在一行上全部使用-或将三引号更改为多行:

  • 本文向大家介绍使用工具 plsqldev将Excel导入Oracle数据库,包括了使用工具 plsqldev将Excel导入Oracle数据库的使用技巧和注意事项,需要的朋友参考一下 1、使用工具 plsqldev 2、打开需导入的excel表格,单击office按钮,选择另存为--其他格式, 选择保存类型CSV(逗号分隔)(*.csv),单击保存 3、打开plsqldev 在工具栏中选择Tool

  • 本文向大家介绍利用PL/SQL从Oracle数据库导出和导入数据,包括了利用PL/SQL从Oracle数据库导出和导入数据的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了使用PL/SQL从Oracle数据库导出和导入数据的方法,供大家参考,具体内容如下 1.导出数据: 方式一:工具—>导出用户对象—>导出.sql文件 注:这种方式导出的是建表语句和存储过程语句 方式二:工具—>导出表

  • 我有一个从甲骨文获取数据并上传到谷歌云存储的需求。 我正在使用executeSql proecssor,但是对于大表来说它是失败的,甚至对于有大约45MB大小的100万条记录的表来说,它需要花费2小时来提取。 使用restapi将表名传递给listenHttp,Listenhtp将表名传递给ExecutesQL。我不能使用QueryDatabase,因为表的数量是动态的,启动获取的调用也是动态的,

  • 在运行数据泵导入前,点击“生成 SQL”按钮来检查 SQL 语句。然后,你可以点击“运行”按钮来运行导入进程。 若要显示隐藏的选项卡(高级选项),请勾选“显示高级选项”选项。 常规属性 工作名 指定工作的名。 模式 选择导入模式:FULL、TABLESPACE、SCHEMAS、TABLE。 内容 选择要导入的数据。 表存在的动作 指定当数据被加载到一个已存在的表时要运行的动作。 导入数据 选择要导