在UNIX框中执行bcp时出错

目前我正在Unix框中执行Perl脚本。 Perl脚本内部使用BCP命令从MS-SQL DB中获取数据。 相同的perl脚本在Windows中正常运行。 但是当我执行到Unix(使用腻子)。 它在控制台上显示以下错误消息。

sh: bcp: command not found 

下面是我在perl脚本中的sql命令。

 "bcp \"select drive_id, ilf, xcoord, ycoord from $mdtdb\.dbo\.$mdtcentraldtdtable a where drive_id = $driveid and not exists (select 'x' from $mdtdb\.dbo\.$mdtcentralaudittable b where a.drive_id = b.drive_id and a.ilf = b.ilf)\" queryout $tempdatafile -o $bcpoutfile -S $mdtsvr -q -c -t , -U $user1 -P $pw1"; 

我成功地能够连接到数据库。

我需要你的帮助来解决上面的bcp问题。

    在unix上,有一个用于sybase客户端的bcp工具。 它仅适用于Sybase产品。

    有一个与MSSQL服务器一起使用的bcp的开源替代品: freebcp但是freetds库有点难以配置,并且(作为志愿者的逆向工程工作),它只适用于相对简单的数据类型。

    要在基于Ubuntu / Debian的Linux机器上安装它,运行这个

    apt-cache search freetds

     freetds-common - configuration files for FreeTDS SQL client libraries freetds-dev - MS SQL and Sybase client library (static libs and headers) libct4 - libraries for connecting to MS SQL and Sybase SQL servers libdbd-freetds - Freetds database server driver for libdbi libsybdb5 - libraries for connecting to MS SQL and Sybase SQL servers tdsodbc - ODBC driver for connecting to MS SQL and Sybase SQL servers freetds-bin - FreeTDS command-line utilities libaprutil1-dbd-freetds - Apache Portable Runtime Utility Library - FreeTDS Driver sqsh - commandline SQL client for MS SQL and Sybase servers libqt4-sql-tds - Qt 4 FreeTDS database driver 

    这个命令是可选的:

    apt-file list freetds-bin

     freetds-bin: /usr/bin/bsqldb freetds-bin: /usr/bin/bsqlodbc freetds-bin: /usr/bin/datacopy freetds-bin: /usr/bin/defncopy freetds-bin: /usr/bin/fisql freetds-bin: /usr/bin/freebcp freetds-bin: /usr/bin/osql freetds-bin: /usr/bin/tdspool freetds-bin: /usr/bin/tsql 

    这些命令安装你所需要的大部分

     apt-get install freetds-bin apt-get install freetds-dev 

    然后,您必须将您的连接数据输入到配置文件中

     /etc/freetds/freetds.conf [OurMSSQLserver] host = 1xx.xxx.xxx.xx port = 1433 tds version = 8.0 

    也许在这个配置文件中的其他东西必须改变。 这我现在不记得了。

    从这里开始,你就是自己的。 请阅读freetds文档: http ://www.freetds.org/userguide/

    freetds软件是最新的(积极开发)。 但是我认为开发团队非常小。

    你也可以从源代码编译freetds,但这可能需要更多的努力。

    错误非常明显:$ PATH中找不到bcp命令,因此失败,但真正的问题是bcp是MS SQL server实用程序,在UNIX上找不到它

    您可以通过使用DBI → DBD :: ODBC → Easysoft SQL server ODBC驱动程序从unix上的Perl获得对Perl的MSSQL数据库的编程访问