sqsh 中的 Unicode 连接到 MSSQL(或替代方案)
Posted
技术标签:
【中文标题】sqsh 中的 Unicode 连接到 MSSQL(或替代方案)【英文标题】:Unicode in sqsh connecting to MSSQL (or alternatives) 【发布时间】:2011-05-31 12:39:15 【问题描述】:我有一个 MSSQL 数据库,其中包含 Unicode (utf8) 数据。我的工作站是 linux(目前是 Ubuntu),并且正在寻找一种与 mssql 数据库一起工作的工具,我发现了 SQSH。 问题是 - 当我在 sqsh 控制台中选择数据时,我得到的是乱码而不是 unicode 字符。使用开关“-J utf8”或“-J utf-8”并没有改变任何东西。
问题是——如何设置 sqsh 来处理 utf-8 数据?
如果不可能,您是否知道任何可用于 linux 的替代工具来处理填充了 utf-8 数据的 mssql 数据库。我需要执行各种 T-SQL,运行预先准备好的 SQL 脚本文件,并输出结果以供以后处理。也可以使用良好的 GUI(开源),不仅限于 shell 客户端。
【问题讨论】:
考虑到您说您在 SQL Server 中存储 utf-8 数据,我假设您使用的是 SQL Server 2019 预览版? Unicode 在 Windows 和 SQL Server 上表示 UTF16。 Unicode 文本存储在nvarchar
字段中。它可以正常工作 - SO 是一个使用 SQL Server 的 ASP.NET 网站。仅在最新版本中为批量导入/导出添加了 UTF8 支持。 UTF8 作为 varchar 编码将添加到 SQL Server 2019 中,目前处于预览阶段
你试过mssql-cli或Azure Data Studio吗?不幸的名字,但那是 SQL Server 的跨平台开发人员 IDE
【参考方案1】:
你在使用 freetds 和 sqsh 吗?如果是,请编辑您的 freetds.conf 以设置字符集。
http://www.freetds.org/userguide/localization.htm
【讨论】:
【参考方案2】:使用Azure Data Studio 避免数据故障排除问题。它是 Linux 的一个很好的 SSMS 替代品。
【讨论】:
【参考方案3】:如果您需要命令行工具,我建议使用来自 mssql-tools 的官方 sqlcmd。 它适用于包括 Ubuntu 在内的所有主要 Linux 发行版。
Connecting with sqlcmd
另一个shell工具是mssql-cli
特点
Mssql-cli 是一个新的交互式命令行工具,它提供 在终端环境中对 sqlcmd 进行了以下主要增强:
T-SQL 智能感知 语法高亮 查询结果的漂亮格式,包括垂直格式 多行编辑模式 配置文件支持
【讨论】:
【参考方案4】:我遇到了同样的问题,它似乎与字符编码无关,但问题是脚本中有控制字符,不可打印字符。
我从 sql 脚本中删除了它们,一切正常。
【讨论】:
以上是关于sqsh 中的 Unicode 连接到 MSSQL(或替代方案)的主要内容,如果未能解决你的问题,请参考以下文章
使用 Typeorm 连接到 Nestjs 中的 mssql,但 Nest 无法解析 EmployeeRepository 的依赖关系
通过 php 中的 PDO 将 xampp 连接到在线 MSSQL 数据库