【发布时间】:2010-09-14 01:05:22
【问题描述】:
我们有一台运行 SQL Server 2005 的 Windows 机器,我们需要能够从 Linux 机器上运行一些数据库查询。有哪些推荐的方法来做到这一点?理想情况下,我们需要一个类似于 Windows 上的 sqlcmd 的命令行实用程序。
【问题讨论】:
标签: sql-server
我们有一台运行 SQL Server 2005 的 Windows 机器,我们需要能够从 Linux 机器上运行一些数据库查询。有哪些推荐的方法来做到这一点?理想情况下,我们需要一个类似于 Windows 上的 sqlcmd 的命令行实用程序。
【问题讨论】:
标签: sql-server
很惊讶没有人提到,与其他答案似乎暗示的相反,FreeTDS 就是您所需要的。不需要 unixODBC、iODBC 或其他任何东西。
在 Windows 上运行一些数据库查询 [...] 类似于 sqlcmd 的命令行实用程序
tsql 执行此操作,并且是 FreeTDS 软件包的一部分(freebcp 和其他实用程序也是如此)。 tsql 没有花哨的用户界面,但如果你想要一个轻量级、功能性和高性能的命令行实用程序,它就可以了。
参见例如How to run a SQL script in tsql
顺便说一下,我的意思是小于 500kb(可能小于 60k,具体取决于它的编译方式),据我所知,内存和 CPU 效率极高。
【讨论】:
我想推荐Sqlectron。除了在 MIT 许可下开源之外,它还受到 Electron 的多平台支持。它自己的定义是:
具有跨数据库和平台支持的简单轻量级 SQL 客户端桌面
它currently supports PostgreSQL、MySQL、MS SQL Server、Cassandra 和 SQLite。
【讨论】:
现在有一个不错的基于 CLI 的工具用于访问 MSSQL 数据库。
它叫mssql-cli,有点类似于postgres的psql。
例如通过pip 安装(全局安装,对于本地安装省略sudo 部分):
sudo pip install mssql-cli
【讨论】:
如果您使用 eclipse,您可以在其上安装 Data Tools Platform 插件,并将其用于包括 MS SQLServer 在内的每个数据库引擎。它只需要为该数据库引擎获取 JDBC 驱动程序。
【讨论】:
valentina-db 它有 sql server 的免费版本
.rpm 和 .deb
序列号将在注册后通过电子邮件发送
https://www.valentina-db.com/en/
【讨论】:
由于November 2011 Microsoft 为 Red Hat Enterprise Linux (RHEL) 和 SUSE Linux Enterprise Server (SLES) 提供了自己的 SQL Server ODBC Driver for Linux。
它还包括用于 Linux 的 sqlcmd。
【讨论】:
sql-cli 是一个基于nodejs 的跨平台sql server 命令行界面。你可以通过 npm https://www.npmjs.org/package/sql-cli 安装它
它可以连接到本地和 sql azure 实例。
【讨论】:
mysql CLI 客户端的人来说,这是迄今为止最好的解决方案。
我对 freetds 解决方案不满意, 这就是我编写一个类的原因(命令历史记录、表和字段的自动完成等)
http://www.phpclasses.org/package/8168-PHP-Use-ncurses-to-get-key-inputs-and-write-shell-text.html
【讨论】:
如果您使用的是 Java,请查看 JDBC。
http://msdn.microsoft.com/en-us/library/ms378672(SQL.90).aspx
【讨论】:
sqsh (http://www.sqsh.org/) + freetds (http://www.freetds.org)
sqsh 主要是 Sybase SQL Server(现在是 ASE)的 isql 替代品,但它可以很好地连接到 SQL Server(前提是您使用 freetds)。
要编译,只需将 $SYBASE 指向 freetds 安装,它应该可以从那里开始工作。我整天在 Mac 上使用它。
sqsh 最好的部分是高级功能,例如简单的服务器链接(无需在 SQL Server 中设置链接服务器)、流控制和循环(不再连接字符串和执行动态 SQL)和不可见的批量复制/加载。
使用任何其他命令行工具的人简直是疯了! :)
【讨论】:
sqsh.org 不再是一个好的链接(目前是日本房地产?)。可以找到on SourceForge,尽管自 2014 年以来没有更新。
有一个可用于 PHP 的抽象库。不确定您的客户端将支持什么,但如果它的 Linux 肯定应该支持构建 PHP 查询接口: http://adodb.sourceforge.net/希望对你有所帮助。
【讨论】:
pymssql 是一个基于 FreeTDS 的 DB-API Python 模块。它对我有用。如果需要,创建一些辅助函数,并从 Python shell 中使用它。
【讨论】:
pymssql 似乎没有pyodbc 维护得那么好。事实上,看起来pymssql 开发人员因为pyodbc 而放弃了。
首先安装 FreeTDS,然后配置两个 ODBC 引擎之一以使用 FreeTDS 作为其 ODBC 驱动程序。然后使用 ODBC 引擎的命令行界面。
unixODBC 有 isql,iODBC 有 iodbctest
你也可以使用你喜欢的编程语言(我已经成功使用 Perl、C、Python 和 Ruby 连接到 MSSQL)
我个人使用的是 FreeTDS + iODBC:
$more /etc/freetds/freetds.conf
[10.0.1.251]
host = 10.0.1.251
port = 1433
tds version = 8.0
$ more /etc/odbc.ini
[ACCT]
Driver = /usr/local/freetds/lib/libtdsodbc.so
Description = ODBC to SQLServer via FreeTDS
Trace = No
Servername = 10.0.1.251
Database = accounts_ver8
【讨论】:
/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so。我得到 [ISQL] 错误:无法 SQLConnect。
Mono 包含应该为您执行此操作的 ADO.NET 提供程序。我不知道它是否有命令行实用程序,但如果没有的话,你绝对可以封装一些 C# 来执行查询。
看看http://www.mono-project.com/TDS_Providers和http://www.mono-project.com/SQLClient
【讨论】:
你没有说你想对结果数据做什么,但如果它是用于开发/维护的一般查询,那么我会想到 Windows 服务器的远程桌面,然后使用他们的实际 SQL Server 工具与 Linux 本身的任何组合解决方案相比,它始终是一种更高效的选择。
【讨论】: