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(或替代方案)的主要内容,如果未能解决你的问题,请参考以下文章

Django 连接到 MSSQL

使用 Typeorm 连接到 Nestjs 中的 mssql,但 Nest 无法解析 EmployeeRepository 的依赖关系

通过 php 中的 PDO 将 xampp 连接到在线 MSSQL 数据库

如何使用纯 JavaScript 连接到 MSSQL

通过 *** 将 PHP 应用程序连接到 MSSQL 时应该考虑啥?

使用 Flask-SQLAlchemy 连接到 MSSQL 数据库