2012-04-08 14 views
0

ruby​​スクリプトの.sqlファイルを文字列にロードして実行しようとしています。Ruby Mysql - .sqlファイルをロードして実行

何らかの理由で私は構文エラーを表示していますが、私が直接ステートメントをコピーしてmysqlに貼り付けるとうまくいきます。

は、ここで私はそれを行う方法は次のとおりです。

text = File.read(src_sql_file) 
new_text = text.DOINGSOMEGSUBSTUFF 
@dbh.select_db(dbname) 
sql = @dbh.prepare(new_text) 
sql.execute() 

私もこの試みた:

sql = @dbh.prepare(new_text) do |sth| 
    sth.execute() 
end 

をし、私は常に取得:

このため、SQLがどのように見える
Error message: You have an error in your SQL syntax; check the manual that corresponds to 
your MySQL server version for the right syntax to use near 

'CREATE TABLE `the_logs` (
`id` INT(11) NOT NULL AUTO_INCREMENT PR' at line 5 

それ:

CREATE TABLE `the_logs` (
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
`timestamp` INT(11) NOT NULL , 
... 

準備が整っていないと思いますか?私はまた、クエリを試してみました..どちらも動作しませんでした。

ご協力いただきまして誠にありがとうございます。 T

+0

DOINGSOMEGSUBSTUFFが何をしているのかわからなくても、文全体を見ることなく何が問題なのかを知ることは難しいです。私は最初に、構文エラーの可能性が低い、些細なmysql文を試してみましょう。 – Max

+0

括弧はすべて閉じていますか?ステートメントを閉じるには ';'を使用していますか? SQL文全体を見ることができないので、それが何であるかを正確には明らかにしない。いくつかのGUIツール(MySQL Query Browserや他のGUIツールを使用していることを前提としています)は、ステートメントの最後に ';'を付けないようにすることができます。ありがとう。 – jefflunt

+0

私はDOSOMESTUFFを除外しました。なぜならそれがなければDOSOMESTUFFも動作しないからです。 –

答えて

2

私は、一度に1つのステートメントを処理したいと考えているライブラリと、一度にいくつかのステートメントを渡すことを期待しています。

文字列をセミコロンで区切り、各文を個別に実行してみてください。

+0

それだった!おかげで仲間になりました。 –

関連する問題