Hi,
We’re trying to replicate a SQL Server to MemSQL but control the destination DB name and table names.
We tried to use infer-schemas for a working baseline. But, the output file used results in a “null pointer exception”.
username@memsql-replicant01:~/replicate_mssql_memsql$ ./replicant-cli/bin/replicant infer-schemas --filter sqlserver_filter_b.yaml sqlserver_conn.yaml MEMSQL
Source schemas inferred: /home/username/replicate_mssql_memsql/schemas.yaml
username@memsql-replicant01:~/replicate_mssql_memsql$ cat schemas.yaml
schemas:
- catalog: Schema_Name_dbo
tables:
- columns:
- name: column1
notNull: true
type: INT
- name: column2
type: INT
name: table1
tableStore: ROW
username@memsql-replicant01:~/replicate_mssql_memsql$ ./replicant-cli/bin/replicant snapshot --filter sqlserver_filter_b.yaml --append sqlserver_conn.yaml memsql_conn.yaml --extractor sqlserver_extractor.yaml --applier memsql_applier.yaml --id replicator6 --dst-schema schemas.yaml
Replication error
java.lang.NullPointerException: null
at tech.replicant.form.schema.MemSQLTableSchemaForm.a(SourceFile:113)
at tech.replicant.form.schema.DBSchemasForm$NamespaceSchemaForm.a(SourceFile:829)
at tech.replicant.form.schema.DBSchemasForm$NamespaceSchemaForm.a(SourceFile:1837)
at tech.replicant.form.schema.DBSchemasForm.a(SourceFile:894)
at tech.replicant.ReplicationManager.a(SourceFile:144)
at tech.replicant.Main.main(SourceFile:2879)
Without using --dst-schema
, the replicant works but chooses the destination DB name and table names itself.
We also tried to use map but, when using table-store: [ROW || COLUMN]
we get a Java enumeration error.
When we omit that key value and leave two simple schema->database names, the replicant
ignores the mapping and uses the default “chained” named of “Schema_Name_dbo”.
rules:
custom_name:
source:
- [dbo, Schema_Name] # Also tried just "Schema_Name"/"dbo"
The structure was taken from the included examples directory that comes with the replicant.
Any help is appreciated.