setwd("/mnt/mountpoint/abc/")
sqlServerConnString <- "SERVER=server;DATABASE=sqldwdb;UID=xyz;PWD=abc;"
sqlServerDataDS <- RxSqlServerData(sqlQuery = "SELECT * FROM xyz",
connectionString = sqlServerConnString)
sqlServerDataDF <- rxImport(sqlServerDataDS)
これは私のコードです。 Rでフォローインエラーが発生しています
[unixODBC] [ドライバーマネージャー]ライブラリ 'SQL Server'を開けません:ファイルが見つかりません
[unixODBC] [Driver Manager]接続が存在しませんODBC SQLDisconnectのエラーはデータソースを開けませんでした。doTryCatch(return(expr)、name、parentenv、handler)のエラー:データを開けませんでしたソース。
LinuxマシンにMSSQLおよびunixODBCドライバーをインストールしましたが、/ etc/odbc.iniファイルでも反映されています
誰かがこれで私を助けてくれますか?
MSSQLSERVERへの接続用のコードを下に置くと、同じエラーが発生しました
library(RODBC)
dbconnection <- odbcDriverConnect("Driver=SQL Server;Server=192.168.76.60; Database=kaggle;Uid=sa; Pwd=1234")
それは私に投げます
[unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found
なぜこのエラーがスローされますか?回答:適切なODBCバージョン名をドライバー値に設定できない場合。
ドライバーを取得できる場所からODBCバージョン名
「/ etc」フォルダ内に「odbcinst.ini」ファイルがあり、それを開いてバージョン名を確認します
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/Microsoft/msodbcsql17/lib64/libmsodbcsql-17.1.so.0.1
UsageCount=1
だから私はODBCここからドライバ名、それは「SQL Server用ODBCドライバ17」になりますそして、私は接続文字列を変更します
library(RODBC)
dbconnection <- odbcDriverConnect("Driver=ODBC Driver 17 for SQL Server;Server=192.168.76.60; Database=kaggle;Uid=sa; Pwd=1234")
そしてそれはうまく動作します
残念ながら、Zaynulの回答はうまくいきませんでした。しかし、別の方法を見つけるのに役立ちました。私はsqlalchemyを使用していますが、ドライバーパスを渡す接続を正常に作成できました。
_engine = create_engine('mssql+pyodbc://sa:******@localhost:1433/dbCVServer?driver=/opt/Microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1', echo=True)
engine.execute('select 1')
_
編集:ドライバーのファイル名が変更される可能性があるため、その解決策に満足していなかったため、pymssqlの接続に使用するライブラリーを変更できました
engine = create_engine('mssql+pymssql://sa:******@localhost:1433/dbCVServer')
それもうまくいきました。 =]
編集2:別の検出、名前付きインスタンスに接続、たとえばsql expressを使用している場合
engine = create_engine('mssql+pymssql://mssql+pymssql://localhost\SQLEXPRESS/dbCVServer')