Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add postgresql migration docs #867

Merged
merged 2 commits into from
Jul 3, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 119 additions & 16 deletions pages/advanced-algorithms/available-algorithms/migrate.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,17 @@ A module that contains procedures describing graphs on a meta-level.

### `mysql()`

With the `migrate.mysql()` procedure you can access MySQL and execute queries.
With the `migrate.mysql()` procedure you can access MySQL and migrate your data to Memgraph.
The result table is converted into a stream, and the returned rows can be used
to create graph structures. The value of the `config` parameter must be at least
an empty map. If `config_path` is passed, every key,value pair from JSON file
an empty map. If `config_path` is passed, every key-value pair from JSON file
will overwrite any values in `config` file.

{<h4> Input: </h4>}

* `table_or_sql: str` ➡ Table name or an SQL query.
* `table_or_sql: str` ➡ Table name or an SQL query. When the table name is specified, the module
will migrate all the rows from the table. In the case that a SQL query is provided, the module
will migrate the rows returned from the queries.
* `config: mgp.Map` ➡ Connection configuration parameters (as in `mysql.connector.connect`).
* `config_path` ➡ Path to a JSON file containing configuration parameters (as in `mysql.connector.connect`).
* `params: mgp.Nullable[mgp.Any] (default=None)` ➡ Optionally, queries can be parameterized. In that case, `params` provides parameter values.
Expand All @@ -48,28 +50,46 @@ will overwrite any values in `config` file.

{<h4> Usage: </h4>}

To get count of rows, use the following query:
To inspect a sample of rows, use the following query:

```cypher
CALL migrate.mysql('example_table', {user:'memgraph',
password:'password',
host:'localhost',
database:'demo_db'} )
YIELD row
RETURN count(row);
RETURN row;
LIMIT 5000;
```

In the case you want to migrate specific results from a SQL query, it is enough to modify the
first argument of the query module call, and continue to use the Cypher query language to
shape your results:

```cypher
CALL migrate.mysql('SELECT * FROM example_table', {user:'memgraph',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a WHERE clause

password:'password',
host:'localhost',
database:'demo_db'} )
YIELD row
WITH row
WHERE row.age >= 30
RETURN row;
```

### `sql_server()`

With the `migrate.sql_server()` procedure you can access SQL Server and execute
queries. The result table is converted into a stream, and the returned rows can
With the `migrate.sql_server()` procedure you can access SQL Server and migrate your data
to Memgraph. The result table is converted into a stream, and the returned rows can
be used to create graph structures. The value of the `config` parameter must be
at least an empty map. If `config_path` is passed, every key,value pair from
at least an empty map. If `config_path` is passed, every key-value pair from
JSON file will overwrite any values in `config` file.

{<h4> Input: </h4>}

* `table_or_sql: str` ➡ Table name or an SQL query.
* `table_or_sql: str` ➡ Table name or an SQL query. When the table name is specified, the module
will migrate all the rows from the table. In the case that a SQL query is provided, the module
will migrate the rows returned from the queries.
* `config: mgp.Map` ➡ Connection configuration parameters (as in `pyodbc.connect`).
* `config_path` ➡ Path to the JSON file containing configuration parameters (as in `pyodbc.connect`).
* `params: mgp.Nullable[mgp.Any] (default=None)` ➡ Optionally, queries can be parameterized. In that case, `params` provides parameter values.
Expand All @@ -80,28 +100,46 @@ JSON file will overwrite any values in `config` file.

{<h4> Usage: </h4>}

To get all data from database in form of map, use the following query:
To inspect the first 5000 rows from a database, use the following query:

```cypher
CALL migrate.sql_server('example_table', {user:'memgraph',
password:'password',
host:'localhost',
database:'demo_db'} )
YIELD row
RETURN row
LIMIT 5000;
```

In the case you want to migrate specific results from a SQL query, it is enough to modify the
first argument of the query module call, and continue to use the Cypher query language to
shape your results:

```cypher
CALL migrate.sql_server('SELECT * FROM example_table', {user:'memgraph',
password:'password',
host:'localhost',
database:'demo_db'} )
YIELD row
WITH row
WHERE row.age >= 30
RETURN row;
```

### `oracle_db()`

With the `migrate.oracle_db` you can access Oracle DB and execute queries. The
result table is converted into a stream, and the returned rows can be used to
With the `migrate.oracle_db` you can access Oracle DB and migrate your data to Memgraph.
The result table is converted into a stream, and the returned rows can be used to
create graph structures. The value of the `config` parameter must be at least an
empty map. If `config_path` is passed, every key,value pair from JSON file will
empty map. If `config_path` is passed, every key-value pair from JSON file will
overwrite any values in `config` file.

{<h4> Input: </h4>}

* `table_or_sql: str` ➡ Table name or an SQL query.
* `table_or_sql: str` ➡ Table name or an SQL query. When the table name is specified, the module
will migrate all the rows from the table. In the case that a SQL query is provided, the module
will migrate the rows returned from the queries.
* `config: mgp.Map` ➡ Connection configuration parameters (as in `oracledb.connect`).
* `config_path` ➡ Path to the JSON file containing configuration parameters (as in `oracledb.connect`).
* `params: mgp.Nullable[mgp.Any] (default=None)` ➡ Optionally, queries may be parameterized. In that case, `params` provides parameter values.
Expand All @@ -112,7 +150,7 @@ overwrite any values in `config` file.

{<h4> Usage: </h4>}

To get the first 5000 rows from a database, use the following query:
To inspect the first 5000 rows from a database, use the following query:

```cypher
CALL migrate.oracle_db('example_table', {user:'memgraph',
Expand All @@ -122,4 +160,69 @@ CALL migrate.oracle_db('example_table', {user:'memgraph',
YIELD row
RETURN row
LIMIT 5000;
```
```

In the case you want to migrate specific results from a SQL query, it is enough to modify the
first argument of the query module call, and continue to use the Cypher query language to
shape your results:

```cypher
CALL migrate.oracle_db('SELECT * FROM example_table', {user:'memgraph',
password:'password',
host:'localhost',
database:'demo_db'} )
YIELD row
WITH row
WHERE row.age >= 30
RETURN row;
```

### `postgresql()`

With the `migrate.postgresql` you can access PostgreSQL and migrate your data to Memgraph.
The result table is converted into a stream, and the returned rows can be used to
create graph structures. The value of the `config` parameter must be at least an
empty map. If `config_path` is passed, every key-value pair from JSON file will
overwrite any values in `config` file.

{<h4> Input: </h4>}

* `table_or_sql: str` ➡ Table name or an SQL query. When the table name is specified, the module
will migrate all the rows from the table. In the case that a SQL query is provided, the module
will migrate the rows returned from the queries.
* `config: mgp.Map` ➡ Connection configuration parameters (as in `psycopg2.connect`).
* `config_path` ➡ Path to the JSON file containing configuration parameters (as in `psycopg2.connect`).
* `params: mgp.Nullable[mgp.Any] (default=None)` ➡ Optionally, queries may be parameterized. In that case, `params` provides parameter values.

{<h4> Output: </h4>}

* `row: mgp.Map`: The result table as a stream of rows.

{<h4> Usage: </h4>}

To inspect the first 5000 rows from a database, use the following query:

```cypher
CALL migrate.postgresql('example_table', {user:'memgraph',
password:'password',
host:'localhost',
database:'demo_db'} )
YIELD row
RETURN row
LIMIT 5000;
```

In the case you want to migrate specific results from a SQL query, it is enough to modify the
first argument of the query module call, and continue to use the Cypher query language to
shape your results:

```cypher
CALL migrate.postgresql('SELECT * FROM example_table', {user:'memgraph',
password:'password',
host:'localhost',
database:'demo_db'} )
YIELD row
WITH row
WHERE row.age >= 30
RETURN row;
```