我使用R中的DBI包以这种方式连接到teradata:
library(teradatasql)
query <- "
SELECT sku, description
FROM sku_table
WHERE sku = '12345'
"
dbconn <- DBI::dbConnect(
teradatasql::TeradataDriver(),
host = teradataHostName, database = teradataDBName,
user = teradataUserName, password = teradataPassword
)
dbFetch(dbSendQuery(dbconn, query), -1)它返回的结果如下:
SKU DESCRIPTION
12345 18V MAXâ×¢ Collated Drywall Screwgun注意上面的坏字符â×¢。这是商标商标的上标商标。
当我使用SQL助手运行查询并手动将查询结果导出到CSV文件时,它可以正常工作,因为在DESCRIPTION列中有正确的编码。
你知道这是怎么回事吗?我怎么能解决这个问题?显然,我不想要一个手动步骤导出到CSV和重新读取结果回到R数据帧,并进入内存。
发布于 2022-01-05 17:31:13
teradatasql (teradatasql包)驱动程序只支持UTF8会话字符集,不支持使用带有客户端字符集的ASCII会话字符集进行编码和解码。
如果您已将非拉丁字符存储在数据库中的字符集拉丁文列中,并且正在使用客户端字符集为“好”情况编码和解码这些字符,则teradatasql包将无法工作。
另一方面,如果使用UTF8或UTF16会话字符集将Unicode字符存储到数据库中的字符集UNICODE列中,则可以使用teradatasql包成功检索这些字符。
https://stackoverflow.com/questions/70583144
复制相似问题