我能够使用旧的空间功能加载它。
我整理了一个俗气的数据集,其中包含一些纳斯卡线地理标志的坐标:
Name,Latitude,Longitude
Hummingbird,-14.692131,-75.148892
Monkey,-14.7067274,-75.1475391
Condor,-14.6983457,-75.1283374
Spider,-14.694363,-75.1235815
Spiral,-14.688309,-75.122757
Hands,-14.694459,-75.113881
Tree,-14.693897,-75.114467
Astronaut,-14.745222,-75.079755
Dog,-14.706401,-75.130788
我使用了一个脚本来创建我的 GeoGlyph 类createVertexGeoGlyph.osql
:
set echo true
connect PLOCAL:./nazca.orientdb admin admin
CREATE CLASS GeoGlyph EXTENDS V CLUSTERS 1
CREATE PROPERTY GeoGlyph.Name STRING
CREATE PROPERTY GeoGlyph.Latitude FLOAT
CREATE PROPERTY GeoGlyph.Longitude FLOAT
CREATE PROPERTY GeoGlyph.Tag EMBEDDEDSET STRING
CREATE INDEX GeoGlyph.index.Location ON GeoGlyph(Latitude,Longitude) SPATIAL ENGINE LUCENE
我使用加载到我的数据库中
$ console.sh createVertexGeoGlyph.osql
我这样做是因为它似乎对我更有效。当我希望它关闭 CSV 导入时,我在让 ETL 引擎创建定义的属性时遇到了一些困难。有时它想合作并创建我的财产,而其他时候则有麻烦。
因此,获取数据的下一步是为 ETL 流程创建我的 .json 文件。我喜欢制作两个,一个是特定于文件的,另一个是通用文件,因为我经常有跨越多个文件的数据集。
首先,我有一个我的nazca_liens.json
文件:
{
"config": {
"log": "info",
"fileDirectory": "./",
"fileName": "nazca_lines.csv"
}
}
接下来是commonGeoGlyph.json
文件:
{
"begin": [
{ "let": { "name": "$filePath", "expression": "$fileDirectory.append($fileName )" } },
],
"config": { "log": "debug" },
"source": { "file": { "path": "$filePath" } },
"extractor":
{
"csv": { "ignoreEmptyLines": true,
"nullValue": "N/A",
"separator": ",",
"columnsOnFirstLine": true,
"dateFormat": "yyyy-MM-dd"
}
},
"transformers": [
{ "vertex": { "class": "GeoGlyph" } },
{ "code": { "language":"Javascript",
"code": "print('>>> Current record: ' + record); record;" }
}
],
"loader": {
"orientdb": {
"dbURL": "plocal:nazca.orientdb",
"dbType": "graph",
"batchCommit": 1000,
"classes": [],
"indexes": []
}
}
}
文件中的内容过多,我将其用作很多内容的模板。在这种情况下,我不必在 ETL 文件本身中创建索引,因为我已经在createVertexGeoGlyph.osql
文件中创建了它。
要加载数据,我只使用oetl.sh
脚本:
$ oetl.sh commonGeoGlyph.json nazca_lines.json
这对我有用......我确信有更好的方法可以做到这一点,但这有效。我在这里发布这个问题是为了解决这个问题。希望有人会发现这很有用。