For example, the following code is stored in a file
<project_dir>/src/main/java/com/mycompany/app/App1.java
:
package com.mycompany.app;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import oracle.pg.rdbms.pgql.PgqlConnection;
import oracle.pg.rdbms.pgql.PgqlStatement;
import oracle.pg.rdbms.pgql.PgqlResultSet;
import oracle.pgx.api.*;
import oracle.pg.rdbms.GraphServer;
import oracle.pg.rdbms.pgql.jdbc.PgqlJdbcRdbmsDriver;
public class App1 {
public static void main(String[] args) throws Exception {
String dbConnectString = args[0];
String username = args[1];
String password = args[2];
// Obtain a JDBC database connection
DriverManager.registerDriver(new PgqlJdbcRdbmsDriver());
String jdbcUrl = "jdbc:oracle:pgql:@" + dbConnectString;
System.out.println("connecting to " + jdbcUrl);
try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password)) {
conn.setAutoCommit(false);
// Create PGQL connection
PgqlConnection pgqlConn = PgqlConnection.getConnection(conn);
// Create a PGQL statement to execute PGQL queries
PgqlStatement pgqlStmt = pgqlConn.createStatement();
// Create a property graph view using the CREATE PROPERTY GRAPH statement
String pgViewName = "BANK_GRAPH_VIEW";
String createPgViewQuery =
"CREATE PROPERTY GRAPH " + pgViewName + " " +
"VERTEX TABLES ( BANK_ACCOUNTS AS ACCOUNTS " +
"KEY (ID) " +
"LABEL ACCOUNTS " +
"PROPERTIES (ID, NAME)" +
") " +
"EDGE TABLES ( BANK_TXNS AS TRANSFERS " +
"KEY (FROM_ACCT_ID, TO_ACCT_ID, AMOUNT) " +
"SOURCE KEY (FROM_ACCT_ID) REFERENCES ACCOUNTS (ID) " +
"DESTINATION KEY (TO_ACCT_ID) REFERENCES ACCOUNTS (ID) " +
"LABEL TRANSFERS " +
"PROPERTIES (FROM_ACCT_ID, TO_ACCT_ID, AMOUNT, DESCRIPTION)" +
") OPTIONS(PG_VIEW)";
pgqlStmt.execute(createPgViewQuery);
// Execute a query to retrieve the first 10 elements of the graph
String pgqlQuery =
"SELECT e.from_acct_id, e.to_acct_id, e.amount FROM " +
"MATCH (n:ACCOUNTS) -[e:TRANSFERS]-> (m:ACCOUNTS) ON " +
pgViewName + " LIMIT 10";
PgqlResultSet rs = pgqlStmt.executeQuery(pgqlQuery);
rs.print();
// Drop the property graph view using the DROP PROPERTY GRAPH statement
String dropPgViewQuery = "DROP PROPERTY GRAPH " + pgViewName;
pgqlStmt.execute(dropPgViewQuery);
}
System.exit(0);
}
}
You can then compile and run the preceding code by navigating
to your project directory and running the following
command:
mvn compile exec:java -Dexec.mainClass="com.mycompany.app.App1"-Dexec.arguments='<db-connect-string>,<username>,<password>'
On successful processing, the code may produce an output
similar to the following. Note, your output may be different depending on
your
<db-connect-string>.
[INFO] --- exec-maven-plugin:3.1.0:java (default-cli) @ my-app ---
connecting to jdbc:oracle:pgql:@myhost:1521/oradb
name = Baz