我正在从 SQL server
表中读取数据,并将相同的值插入到 PostgreSQL\SQL 数据库表中。这是一个数据迁移过程。
问题是 SQL 中的数据是纯文本,但我在调试中看到它在 watch 中多次显示相同的值(visual studio 2015)。
值在 SQL Server 中显示如下:
visual studio 调试器中的数据显示:
所有迁移过程都正常,但唯一具有这些类型值的表不会插入 PostgreSQL\SQL
并将抛出异常。
异常(exception):
{"22021: invalid byte sequence for encoding \"UTF8\": 0x00"}
堆栈跟踪:
我不明白这里的确切问题。任何人都可以帮助我了解上述问题的原因和解决方案吗?
最佳答案
我怀疑 SQL Server 中显示的值只是停在 Unicode 代码点 0 (U+0000),这是 Windows 控件默认执行的操作。看起来 Postgres 根本不接受这一点。
我相信你应该:
- 尝试弄清楚为什么您在 SQL Server 中获得了这样的值(value)。 (这很可能是执行插入的任何代码中的错误。)
- 确定您想要的数据。如果您确实需要 U+0000 之后的数据,则需要确定这是否意味着更多行、不同的分隔符等。
- 要么修复 SQL Server 中的数据(例如,通过在每个字段中的 U+0000 之前截断)或将截断作为迁移的一部分执行(取决于如何你正在做迁移)。
关于C# 数据读取器值在调试时重复多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55806132/