# Replication from rds postgres to mssgql

**URL:** <https://forum.confluent.io/t/replication-from-rds-postgres-to-mssgql/7065>\
**Category:** Kafka Connect\
**Created:** [23 January 2023 07:57 UTC](https://forum.confluent.io/t/replication-from-rds-postgres-to-mssgql/7065 "2023-01-23T07:57:19Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![vladeli](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/vladeli/32/2685_2.png) [@vladeli](https://forum.confluent.io/u/vladeli)\
**Post date:** [23 January 2023 07:57 UTC](https://forum.confluent.io/t/replication-from-rds-postgres-to-mssgql/7065/1 "2023-01-23T07:57:19Z")

</div>

We are exploring an issue with RDS postgres as a source connector and mssql sink connector, we tried both json and non-json format but without luck, any help/hint would be highly appreciated.  
Source postgres rds connector:  
{  
“name”: “inventory-connector”,  
“config”: {  
“tasks.max”: “1”,  
“connector.class”: “io.debezium.connector.postgresql.PostgresConnector”,  
“plugin.name”: “pgoutput”,  
“snapshot.mode”: “always”,  
“topic.prefix”: “nonp”,  
“database.hostname”: “_**",  
“database.port”: “5432”,  
“database.user”: "**",  
“database.password”: "_**",  
“heartbeat.interval.ms”: “1500”,  
“database.dbname”: "**_",  
“table.include.list”: “public.bitestevents”,  
“key.converter”: “org.apache.kafka.connect.json.JsonConverter”,  
“value.converter”: “org.apache.kafka.connect.json.JsonConverter”,  
“key.converter.schemas.enable”: “false”,  
“value.converter.schemas.enable”: “false”,  
“schema.include”: “public”,  
“publication.autocreate.mode”: “filtered”,  
“database.server.name”: "_\*\*\*”  
}  
}

sink mssql connector:  
{  
“name”: “sqlsink-connector”,  
“config”: {  
“connector.class”: “io.confluent.connect.jdbc.JdbcSinkConnector”,  
“tasks.max”: “1”,  
“topics”: “_**",  
“connection.url”: "**",  
“connection.user”: "_**",  
“connection.password”: "**_",  
“table.name.format”: "_\*\*”,  
“heartbeat.interval.ms”: “1500”,  
“insert.mode”: “upsert”,  
“value.converter”: “org.apache.kafka.connect.json.JsonConverter”,  
“key.converter.schemas.enable”: “false”,  
“value.converter.schemas.enable”: “false”,  
“pk.mode”: “record\_value”,  
“pk.fields”: “id”,  
“key.converter”: “org.apache.kafka.connect.json.JsonConverter”,  
“auto.create”: “true”  
}  
}

Error on Kafka-connect:  
2023-01-20 14:12:14,098 ERROR || WorkerSinkTask{id=sqlsink-connector-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted. Error: null [org.apache.kafka.connect.runtime.WorkerSinkTask]  
java.lang.NullPointerException

---

<div class="post-metadata">

**Author:** ![mmuehlbeyer](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/mmuehlbeyer/32/1088_2.png) [@mmuehlbeyer](https://forum.confluent.io/u/mmuehlbeyer)\
**Post date:** [23 January 2023 10:03 UTC](https://forum.confluent.io/t/replication-from-rds-postgres-to-mssgql/7065/2 "2023-01-23T10:03:08Z")

</div>

hey @vladeli

did you check the kafka connect logfiles?

best,  
michael

---

<div class="post-metadata">

**Author:** ![vladeli](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/vladeli/32/2685_2.png) [@vladeli](https://forum.confluent.io/u/vladeli)\
**Post date:** [23 January 2023 10:31 UTC](https://forum.confluent.io/t/replication-from-rds-postgres-to-mssgql/7065/3 "2023-01-23T10:31:49Z")

</div>

yes part of the logs from kafka connect was in my first post, here is complete error from kafka-connect:

2023-01-20 14:12:14,098 ERROR || WorkerSinkTask{id=sqlsink-connector-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted. Error: null [org.apache.kafka.connect.runtime.WorkerSinkTask]  
java.lang.NullPointerException  
at io.confluent.connect.jdbc.sink.BufferedRecords.flush(BufferedRecords.java:174)  
at io.confluent.connect.jdbc.sink.JdbcDbWriter.write(JdbcDbWriter.java:72)  
at io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:74)  
at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:581)  
at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:333)  
at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:234)  
at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:203)  
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:189)  
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:244)  
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)  
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)  
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)  
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)  
at java.base/java.lang.Thread.run(Thread.java:829)  
2023-01-20 14:12:14,099 ERROR || WorkerSinkTask{id=sqlsink-connector-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted [org.apache.kafka.connect.runtime.WorkerTask]  
org.apache.kafka.connect.errors.ConnectException: Exiting WorkerSinkTask due to unrecoverable exception.  
at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:611)  
at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:333)  
at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:234)  
at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:203)  
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:189)  
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:244)  
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)  
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)  
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)  
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)  
at java.base/java.lang.Thread.run(Thread.java:829)  
Caused by: java.lang.NullPointerException  
at io.confluent.connect.jdbc.sink.BufferedRecords.flush(BufferedRecords.java:174)  
at io.confluent.connect.jdbc.sink.JdbcDbWriter.write(JdbcDbWriter.java:72)  
at io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:74)  
at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:581)  
… 10 more  
2023-01-20 14:12:14,101 INFO || Stopping task [io.confluent.connect.jdbc.sink.JdbcSinkTask]

---

<div class="post-metadata">

**Author:** ![mmuehlbeyer](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/mmuehlbeyer/32/1088_2.png) [@mmuehlbeyer](https://forum.confluent.io/u/mmuehlbeyer)\
**Post date:** [23 January 2023 11:59 UTC](https://forum.confluent.io/t/replication-from-rds-postgres-to-mssgql/7065/4 "2023-01-23T11:59:23Z")

</div>

mmh ok  
did you check the status with a curl request to the api?

see

> **[Kafka Connect REST API Fundamentals](https://developer.confluent.io/learn-kafka/kafka-connect/rest-api/)**
>
> Receive an introduction to the fundamental commands and approaches you'll need to administer a Kafka Connect instance via REST, along with some more advanced strategies.

best,  
michael

---

<div class="post-metadata">

**Author:** ![vladeli](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/vladeli/32/2685_2.png) [@vladeli](https://forum.confluent.io/u/vladeli)\
**Post date:** [23 January 2023 12:09 UTC](https://forum.confluent.io/t/replication-from-rds-postgres-to-mssgql/7065/5 "2023-01-23T12:09:15Z")

</div>

Yes i see two connectors, one for the source which is RDS Postgres and sink connector which is remote MSSQL, we tested replication from Postgres to Postgres and it works also very simple table from Postgres to MSSQL works but MSSQL can’t have PRIMARY KEY with type TEXT so from my point of view it throws this error, we need some help with transformation either in Json or without json if someone had similar experience

---

<div class="post-metadata">

**Author:** ![mmuehlbeyer](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/mmuehlbeyer/32/1088_2.png) [@mmuehlbeyer](https://forum.confluent.io/u/mmuehlbeyer)\
**Post date:** [23 January 2023 12:17 UTC](https://forum.confluent.io/t/replication-from-rds-postgres-to-mssgql/7065/6 "2023-01-23T12:17:52Z")

</div>

ok I see

nevertheless did you check the status of the connector?

so on the postgres side the column you have the pk is text right?

---

<div class="post-metadata">

**Author:** ![mmuehlbeyer](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/mmuehlbeyer/32/1088_2.png) [@mmuehlbeyer](https://forum.confluent.io/u/mmuehlbeyer)\
**Post date:** [23 January 2023 12:23 UTC](https://forum.confluent.io/t/replication-from-rds-postgres-to-mssgql/7065/7 "2023-01-23T12:23:17Z")

</div>

one thing to try is a SMT

> **[Cast | Confluent Documentation](https://docs.confluent.io/platform/current/connect/transforms/cast.html#cast-value)**
>
> This document provides usage information for the Apache Kafka SMT org.apache.kafka.connect.transforms.Cast.

---

<div class="post-metadata">

**Author:** ![vladeli](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/vladeli/32/2685_2.png) [@vladeli](https://forum.confluent.io/u/vladeli)\
**Post date:** [23 January 2023 15:11 UTC](https://forum.confluent.io/t/replication-from-rds-postgres-to-mssgql/7065/8 "2023-01-23T15:11:22Z")

</div>

id in postgres is uuid and postgres converter converts UUID type to STRING, and the MSSQL converters converts it into TEXT type, but because MSSQL cant have PRMARY KEY with type TEXT it throws this error at least from my understanding. I tried CAST with many options but cannot find proper one still…

---

<div class="post-metadata">

**Author:** ![mmuehlbeyer](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/mmuehlbeyer/32/1088_2.png) [@mmuehlbeyer](https://forum.confluent.io/u/mmuehlbeyer)\
**Post date:** [23 January 2023 15:42 UTC](https://forum.confluent.io/t/replication-from-rds-postgres-to-mssgql/7065/9 "2023-01-23T15:42:14Z")

</div>

never used it with sql server though it should work like this

> **[Cast | Confluent Documentation](https://docs.confluent.io/cloud/current/connectors/transforms/cast.html#cast-value)**
>
> This document provides usage information for the Apache Kafka SMT org.apache.kafka.connect.transforms.Cast.

I would go for a try with int or float instead of converting to string (as stated in the link above)

best,  
michael

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex019/uploads/confluentcommunity/original/1X/c49438c90c9df282e9996fdf6971be890c71b65a.svg) [@system](https://forum.confluent.io/u/system)\
**Post date:** [22 February 2023 15:43 UTC](https://forum.confluent.io/t/replication-from-rds-postgres-to-mssgql/7065/10 "2023-02-22T15:43:11Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
