ローカルにある CSV で Graph をロードする
環境
Oracle Graph Server Shell 20.1.0 PGX server version: 19.4.0 type: SM PGX server API version: 3.6.0 PGQL version: 1.2
前提
- Pgx Server で
allow_local_filesystem
が true になっており、かつdatasource_dir_whitelist
に/opt/oracle/oradata
ディレクトリが指定されている
$ cat /etc/oracle/graph/pgx.conf { "allow_local_filesystem": true, "datasource_dir_whitelist": ["/opt/oracle/oradata"], ... }
- Pgx Server が稼働するサーバの
/opt/oracle/oradata
に/opt/oracle/oradata/sample.vertices.csv
と/opt/oracle/oradata/sample.edges.csv
が格納されている。
/opt/oracle/oradata/sample.vertices.csv
1,VL,0.1,1,1,true,2020-04-20,23:59:59.000000059,2020-04-20T16:46:40.000000300,2020-11-11T01:01:01.000000001+09:00,23:30:30.000000030+09:00,0.1,"hoge",2,4 2,VL,-2.0,2,100000000000000000,false,2020-04-20,23:59:59.000000059,2020-04-20T16:46:40.000000300,2020-11-11T01:01:01.000000001+09:00,23:30:30.000000030+09:00,0.2,"hage",3,1 3,VL,0.3,-3,-2222222222222222,false,2020-04-20,23:59:59.000000059,2020-04-20T16:46:40.000000300,2020-11-11T01:01:01.000000001+09:00,23:30:30.000000030+09:00,0.3,"hige",4,4 4,VL,4.56789,3,-3333333333333,true,2020-04-20,23:59:59.000000059,2020-04-20T16:46:40.000000300,2020-11-11T01:01:01.000000001+09:00,23:30:30.000000030+09:00,0.4,"huga",1,2
/opt/oracle/oradata/sample.edges.csv
1,2,EL,0.1,1,1,true,2020-04-20,23:59:59.000000059,2020-04-20T16:46:40.000000300,2020-11-11T01:01:01.000000001+09:00,23:30:30.000000030+09:00,0.1,"hoge",2,4 2,1,EL,-2.0,2,100000000000000000,false,2020-04-20,23:59:59.000000059,2020-04-20T16:46:40.000000300,2020-11-11T01:01:01.000000001+09:00,23:30:30.000000030+09:00,0.2,"hage",3,1 2,3,EL,0.3,-3,-2222222222222222,false,2020-04-20,23:59:59.000000059,2020-04-20T16:46:40.000000300,2020-11-11T01:01:01.000000001+09:00,23:30:30.000000030+09:00,0.3,"hige",4,4 4,2,EL,4.56789,3,-3333333333333,true,2020-04-20,23:59:59.000000059,2020-04-20T16:46:40.000000300,2020-11-11T01:01:01.000000001+09:00,23:30:30.000000030+09:00,0.4,"huga",1,2
CSV ファイルをロードする
var gcb = GraphConfigBuilder.forFileFormat(Format.CSV). addVertexUri("/opt/oracle/oradata/sample.vertices.csv"). addEdgeUri("/opt/oracle/oradata/sample.edges.csv"). setVertexIdType(IdType.INTEGER). setTimeFormat(Arrays.asList("HH:mm:ss.SSSSSSSSS")). setTimeWithTimezoneFormat(Arrays.asList("HH:mm:ss.SSSSSSSSSXXX")). setTimestampFormat(Arrays.asList("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS")). setTimestampWithTimezoneFormat(Arrays.asList("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSXXX")) // Vertex Properties gcb.addVertexProperty("vp_double", PropertyType.DOUBLE) gcb.addVertexProperty("vp_integer", PropertyType.INTEGER) gcb.addVertexProperty("vp_long", PropertyType.LONG) gcb.addVertexProperty("vp_boolean", PropertyType.BOOLEAN) gcb.addVertexProperty("vp_local_date",PropertyType.LOCAL_DATE) gcb.addVertexProperty("vp_time", PropertyType.TIME) gcb.addVertexProperty("vp_timestamp", PropertyType.TIMESTAMP) gcb.addVertexProperty("vp_timestamp_with_timezone", PropertyType.TIMESTAMP_WITH_TIMEZONE) gcb.addVertexProperty("vp_time_with_timezone", PropertyType.TIME_WITH_TIMEZONE) gcb.addVertexProperty("vp_float", PropertyType.FLOAT) gcb.addVertexProperty("vp_string", PropertyType.STRING) gcb.addVertexProperty("vp_vertex", PropertyType.VERTEX) gcb.addVertexProperty("vp_edge", PropertyType.EDGE) // Edge Properties gcb.addEdgeProperty("ep_double", PropertyType.DOUBLE) gcb.addEdgeProperty("ep_integer", PropertyType.INTEGER) gcb.addEdgeProperty("ep_long", PropertyType.LONG) gcb.addEdgeProperty("ep_boolean", PropertyType.BOOLEAN) gcb.addEdgeProperty("ep_local_date",PropertyType.LOCAL_DATE) gcb.addEdgeProperty("ep_time", PropertyType.TIME) gcb.addEdgeProperty("ep_timestamp", PropertyType.TIMESTAMP) gcb.addEdgeProperty("ep_timestamp_with_timezone", PropertyType.TIMESTAMP_WITH_TIMEZONE) gcb.addEdgeProperty("ep_time_with_timezone", PropertyType.TIME_WITH_TIMEZONE) gcb.addEdgeProperty("ep_float", PropertyType.FLOAT) gcb.addEdgeProperty("ep_string", PropertyType.STRING) gcb.addEdgeProperty("ep_vertex", PropertyType.VERTEX) gcb.addEdgeProperty("ep_edge", PropertyType.EDGE) // Label gcb.setLoadVertexLabels(true) gcb.setLoadEdgeLabel(true) var g = session.readGraphWithProperties(gcb.build())
Graph Config Json からロードする方法
{ "attributes": {}, "error_handling": {}, "timestamp_with_timezone_format": ["yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSXXX"], "vertex_props": [{ "type": "double", "dimension": 0, "name": "vp_double" }, { "type": "integer", "dimension": 0, "name": "vp_integer" }, { "type": "long", "dimension": 0, "name": "vp_long" }, { "type": "boolean", "dimension": 0, "name": "vp_boolean" }, { "type": "local_date", "dimension": 0, "name": "vp_local_date" }, { "type": "time", "dimension": 0, "name": "vp_time" }, { "type": "timestamp", "dimension": 0, "name": "vp_timestamp" }, { "type": "timestamp_with_timezone", "dimension": 0, "name": "vp_timestamp_with_timezone" }, { "type": "time_with_timezone", "dimension": 0, "name": "vp_time_with_timezone" }, { "type": "float", "dimension": 0, "name": "vp_float" }, { "type": "string", "dimension": 0, "name": "vp_string" }, { "type": "vertex", "dimension": 0, "name": "vp_vertex" }, { "type": "edge", "dimension": 0, "name": "vp_edge" }], "format": "csv", "timestamp_format": ["yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS"], "time_format": ["HH:mm:ss.SSSSSSSSS"], "vertex_id_type": "integer", "loading": { "load_vertex_labels": true, "load_edge_label": true }, "vertex_uris": ["/opt/oracle/oradata/sample.vertices.csv"], "edge_props": [{ "type": "double", "dimension": 0, "name": "ep_double" }, { "type": "integer", "dimension": 0, "name": "ep_integer" }, { "type": "long", "dimension": 0, "name": "ep_long" }, { "type": "boolean", "dimension": 0, "name": "ep_boolean" }, { "type": "local_date", "dimension": 0, "name": "ep_local_date" }, { "type": "time", "dimension": 0, "name": "ep_time" }, { "type": "timestamp", "dimension": 0, "name": "ep_timestamp" }, { "type": "timestamp_with_timezone", "dimension": 0, "name": "ep_timestamp_with_timezone" }, { "type": "time_with_timezone", "dimension": 0, "name": "ep_time_with_timezone" }, { "type": "float", "dimension": 0, "name": "ep_float" }, { "type": "string", "dimension": 0, "name": "ep_string" }, { "type": "vertex", "dimension": 0, "name": "ep_vertex" }, { "type": "edge", "dimension": 0, "name": "ep_edge" }], "edge_uris": ["/opt/oracle/oradata/sample.edges.csv"], "time_with_timezone_format": ["HH:mm:ss.SSSSSSSSSXXX"] }
- PGX Client を起動して、Graph をロードする
// Graph Config Json ファイルは PGX Client 側に配置されているものを読みにいく var g = session.readGraphWithProperties("/tmp/sample_csv.json")