2012-02-07 25 views
2

現在、私はUnixボックスでPerlスクリプトを実行しています。 Perlスクリプトは、BCPコマンドを内部的に使用して、MS-SQL DBからデータを取得します。同じperlスクリプトがWindowsで正しく動作しています。しかし、私がUnixに(パテを使って)実行しているとき。コンソールに次のエラーメッセージが表示されています。UNIXボックスでbcpを実行中にエラーが発生する

sh: bcp: command not found 

以下は、perlスクリプトのmy 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"; 

DBに正常に接続できました。

上記bcpの問題を解決するには、あなたの助けが必要です。

+1

bcpはMS SQLServerユーティリティです。私はそれがWindows以外の何かに存在するとは思わない。 – Mat

答えて

1

誤差は非常に明確である:bcpコマンドがあなたの$ PATHに見つからないため、それは失敗しますが、本当の問題は、bcpはMS SQLサーバユーティリティがあることであり、あなたが

+0

UNIXでbcpの代替手段を知っていますか。それがfreebcpの場合は、その設定手順を教えてください。 –

0
UNIX上でそれを見つけることができません

あなたがUNIX上でDBIEasysoft SQL Server ODBC DriverDBD::ODBC

+0

しかし、私はEasysoftドライバは無料ではないと思います。我々はそれを最初に購入しなければならない。しかし、私の現在のアプリケーションでは、フリーセットのみを使用して実装する必要があります。 –

+0

あなたはソフトウェアの支払いであるMSSQLを使い始めました。あなたはMSSQLを購入するお金があれば、どうやってコネクターを買うお金がないのですか?あなたがソフトウェアを支払うことを望まないなら、利用可能な質の高い無料のデータベースPostgreSQLがあります。 – zgpmax

+0

perlまたはpythonのsybase dbdドライバを使用してdbアクセスを取得することができます。 – IanNorton

2

を使用して、UNIX上でのPerlからMSSQLデータベースへのプログラムによるアクセスを得ることができるかもしれない、SybaseのクライアントのためのBCPツールがあります。 Sybase製品でのみ動作します。

MSSQLサーバーで動作するbcpのオープンソースの置き換えがあります。freebcpしかし、freetdsライブラリは設定が少し難しく、ボランティアによるリバースエンジニアリングの努力のため、比較的シンプルなデータ型でのみ動作します。

APT-:、Ubuntuの/ DebianのベースのLinuxマシンにインストールしてください。このコマンドはオプションであり、この

のapt-キャッシュ検索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 

を実行するには

ファイルリストfreetds-bin

これらのコマンドは、あなたがそれから多分これconfigfileをで何か他のものを変更する必要があります

/etc/freetds/freetds.conf 

[OurMSSQLServer] 

    host = 1xx.xxx.xxx.xx 
    port = 1433 
    tds version = 8.0 

たconfigfileにあなたの接続データを入力する必要があります

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

が必要なもののほとんどをインストール

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 

。これは私が今覚えていない。

ここからあなた自身があります。 freetdsドキュメントをお読みください:http://www.freetds.org/userguide/

freetdsソフトウェアは最新のものです(積極的に開発されています)。しかし、デベロッパーチームは非常に小さく思っています。

freetdsをソースからコンパイルすることもできますが、それはもっと多くの労力を要します。

+0

可能であれば、Unixマシン上でfreebcpを設定する手順を教えてください。または参照URLを教えてください。 –

+0

私の編集内容をご覧ください。 – knb

関連する問題