2017-07-26 13 views
1

私のパッケージの構成フォルダ(。inst/configに格納されている)に.sqlダンプファイルの形式でデータベース構造を格納しています。私はこの機能でダンプをロードする方法をユーザーに示唆しています実際にはRMySQLを使用してプログラムでSQLダンプ・ファイルをロードできますか?

cat 'filename.sql' | mysql -p databasename 

loaddbstructure <- function(sqlfile = system.file("config/dump.sql", 
               package="mypackagename", mustWork = TRUE)){ 
    message("This message gives 2 options to load the database structure.\n\n", 
      "(1) If a user called 'R' is created in MySQL, you can run this from a shell command line: \n", 
      sprintf("$ cat '%s' | mysql -u R -p tradeflows", sqlfile), 
      "\n\n", 
      "(2) Another option is to call this from a mysql client:\n", 
      "mysql> connect tradeflows;\n", 
      sprintf("mysql> source %s;", sqlfile)) 
} 

はそれです、私はパスワード入力が必要なコマンドラインを使用している瞬間に ~/.my.cnfで提供されている資格情報で作成されたデータベース接続を使用して、RMySQLからのコマンドでこの.sqlファイルをプログラムでロードすることは可能ですか?

+0

されています確立されたMySQL接続を使用してLOAD DATA INFILEオプション? https://dev.mysql.com/doc/refman/5.7/en/load-data.html – Riedsio

+0

@Riedsio LOAD DATA INFILEは.sqlファイルをロードすることはできませんが、 '.csv'などのデータファイルのみをロードできます。フィールドの型とインデックスを持つテーブル構造を作成するSQLダンプをロードします。私は間違っていることをうれしく思います。 –

+0

sourceコマンドの使用はどうですか?つまり、mysqlプロンプトから 'source filename.sql'を実行してください – Riedsio

答えて

0

~/.my.cnfに位置mysql option fileへの接続の資格情報を追加します。

[client] 
user = R 
password = password 

その後、あなたは(特定のLinux)システムのbashコマンドを呼び出すRコマンドを使用してデータベース・ダンプをロードすることができます。

system("cat 'dump.sql' | mysql databasename") 
関連する問題