mysql
  • r
  • 2016-12-07 7 views 0 likes 
    0

    MySQLデータベースに接続するRプロシージャを実行しています。これは、パッケージRMySQLを使用しており、すべて正常に動作しています。しかし、今、私はRSCRIPT同じ手順トラフを実行すると、接続パラメータを渡したい、このR Mysql dbconnect parameters

    library(RMySQL) 
    con_str <- "MySQL(), user = 'root', password = '', dbname = 'nepal_statagri', host = 'localhost'" (this is the string I want to pass as a parameter to RScript) 
    mysqlconnection = dbConnect(con_str) 
    

    のような、それは仕事をdoesntの、そして私がメッセージを得る:に

    「エラー(関数(クラス、FDEF、mtable):署名 ための機能のために 継承された方法を見つけることができません 'dbConnectの' ' "文字"'」

    何C私は何ですか?

    +0

    'RMySQL'' dbConnect'この形式の単一の接続文字列を受け入れることができるバージョンはありません。 Rスクリプトで入力文字列を解析するか、おそらくMySQLグループを使用する必要があります。 –

    +0

    私はこの方法で試しましたが、結果は同じです。あるいは、miを例に挙げることができますか? –

    +1

    下記の@sinQuesoの答えを見てください。構文やグループを修正する必要がありますが、RMySQL APIはあなたが念頭に置いたことをすることを許可しません。 –

    答えて

    1

    エラーメッセージに示すように、文字ベクタを渡してデータベースに接続しようとしています。それは動作しません。

    1つのオプションは、スクリプトの中で正しい構文を使用することです:

    library(RMySQL) 
    mysqlconnection <- dbConnect(RMySQL::MySQL(), 
              user = 'root', 
              password = '', 
              dbname = 'nepal_statgri', 
              host = 'localhost') 
    

    ただし、Rscriptを使用して言及。私の理解では、接続の詳細を格納していないRファイルを持つことに興味がありますが、シェル端末からの引数としてこれらの詳細を渡したいと思っています。

    これを行うには、docoptパッケージを使用して、Rスクリプトのコマンドラインインターフェイスを簡単に作成できるようにすることもできます。たとえば、ファイルに次のように保存した場合connect_mysql.R呼ば:

    'usage: connect_mysql.R [--user <user> --password <pwd> --db <database> --host <host>] 
    
    options: 
        --user username 
        --password password 
        --db database 
        --host host 
    ' -> doc 
    
    library(docopt) 
    library(RMySQL) 
    
    opts <- docopt(doc) 
    
    con <- dbConnect(RMySQL::MySQL(), 
          username = opts$user, 
          password = opts$password, 
          dbname = opts$db, 
          host = opts$host) 
    dbListTables(con) 
    dbDisconnect(con) 
    

    あなたがRscriptを使用してそれを呼び出すと、あなたの接続の詳細を渡すことができるようになります:

    Rscript connect_mysql.R --user root --password password --db nepal_statgri --host localhost 
    
    +0

    ありがとう、これは私が必要とするものです!しかし、私はCRTからDevToolsとDocoptの両方のパッケージをダウンロードしてインストールしましたが、他のパッケージが必要なため実行できません。私は1つずつ試してみましたが、Memoise、Digest、Httr、Withr、R6 ...について話しました。私はすべての依存関係を得ることができる場所ですか? –

    +0

    'docopt'はCRANから入手でき、最小限の依存関係を持ちます。 R端末に 'install.packages(" docopt ")'と入力すると、すべての依存関係がインストールされます。インストールに 'devtools'は必要ありません(githubから最新バージョンをインストールしたい場合のみ)。 – sinQueso

    +0

    完璧!私はgithubの指示に従っていた理由を知りません....ありがとう、それは本当に私の仕事のために便利です –

    関連する問題