如何解决Teradata - 转换过程中遇到非法格式的字符串
我正在通过 Pandas 数据帧中的 Twitter API 获取推文并将数据写入 teradata 数据库。但是,与其他推文不同,一个单元格具有特定推文,其中包含粗体数据。当我尝试将其插入数据库时,它弹出以下错误:
OperationalError: [Version 17.0.0.4] [Session 3046127] [teradata sql Driver] [Error 528] A failure occurred while executing rows 1 through 292 of a batch request.
at gosqldriver/teradatasql.(*teradataConnection).makeDriverErrorCode teradataConnection.go:1120
at gosqldriver/teradatasql.newteradaTarows teradaTarows.go:396
at gosqldriver/teradatasql.(*teradataStatement).QueryContext teradataStatement.go:122
at gosqldriver/teradatasql.(*teradataConnection).QueryContext teradataConnection.go:2083
at database/sql.ctxDriverQuery ctxutil.go:48
at database/sql.(*DB).queryDC.func1 sql.go:1579
at database/sql.withLock sql.go:3204
at database/sql.(*DB).queryDC sql.go:1574
at database/sql.(*Conn).QueryContext sql.go:1823
at main.goCreateRows goside.go:654
at main._cgoexpwrap_cfa80c8a3acb_goCreateRows _cgo_gotypes.go:363
at runtime.cgocallbackg1 cgocall.go:332
at runtime.cgocallbackg cgocall.go:207
at runtime.cgocallback_gofunc asm_amd64.s:793
at runtime.goexit asm_amd64.s:1373
Caused by [Version 17.0.0.4] [Session 3046127] [teradata Database] [Error 6705] An illegally formed character string was encountered during translation.
at gosqldriver/teradatasql.(*teradataConnection).formatDatabaseError teradataConnection.go:1138
at gosqldriver/teradatasql.(*teradataConnection).makeChainedDatabaseError teradataConnection.go:1154
数据库中的推文数据类型是“varchar(1000) CHaraCTER SET UNICODE NOT CASESPECIFIC”
这是示例数据:
包含粗体文本的推文导致插入问题。我该如何缓解这种情况?
解决方法
要存储或检索任意 Unicode 代码点,请使用 Unicode Pass-Through 功能来加载和查询会话。
SET SESSION CHARACTER SET UNICODE PASS THROUGH ON;
对于给出的特定示例,您可能会发现“规范化”Unicode 文本很有用,例如如果您需要相应的 ASCII 字母字符,请在加载前使用 Python unicodedata.normalize
或在加载后使用 Teradata TRANSLATE(...)
- 但这不适用于其他 Unicode 字符,例如也可能出现在输入中的表情符号。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。