2013-08-22 9 views
6

私はR.RODBCを介したRStudioを介したSQLクエリの実行:ハッシュテーブルはどのように扱いますか?

に支障を閲覧できるようにしたいのですが、非常に基本的なSQLクエリを持っているが、私は#tableを参照できるようにする必要があり、次のとおりです。

select 
    RAND(1) as random 
    into #test 

    select * from #test 

これは可能ですか?永久的なテーブルを作成する必要がありますか?

私は現在、私が実行したSQLファイルを選択することができますRODBCスクリプトを経由して次の操作を行います。

require(RODBC) 
    sql.filename <- choose.files('T:\\*.*') 
    sqlconn <- odbcDriverConnect("driver={SQL Server};Server=SERVER_NAME;Trusted_Connection=True;") 
    file.content <- readLines(sql.filename) 
    output <- sqlQuery(sqlconn, paste(file.content[file.content!='--'],collapse=' ')) 
    closeAllConnections() 

あなたは私がRで私のSQLのscripsに#TABLESを利用することができますどのように上の任意のアドバイスはありますか?

ありがとうございます!

+0

SQLクエリを文字列として渡すべきではありませんか? '(x < - " #tralala ")' –

+0

paste関数は文字列を作成します。あなたはこれについてどうやって行きますか? –

+0

'paste("# "、" tralala "、sep =" ")'あなたは "tralala"も変数にすることができます。 '?paste'や' help(paste) 'を参照してください。 –

答えて

0

私が好きならば、それは文字(0)を返し、二つの部分に私のクエリを分離することにより#TABLESを使用します。

sqlQuery(test_conn, paste(" 
drop table #test; 
select 
     RAND(1) as random 
    into #test 

select * from #test 
")) 

ので、代わりに私が使用します。

sqlQuery(test_conn, paste(" 
drop table #test; 
select 
     RAND(1) as random 
    into #test 
")) 

sqlQuery(test_conn,"select * from #test") 

それはように見えます#tableを作成するために1つのクエリを送信し、コンテンツを取得するために1つのクエリを送信するとうまく動作します。私はドロップテーブル#testにも追加しました。私のクエリには、#testがまだ存在しないことが確認されています。すでに存在する#テーブル名に書き込もうとすると、エラーが発生します

0

一時テーブルを使用すると、SQLはテーブル内の行数のメッセージを出力します。 Rはこのメッセージで何をすべきか分からない。 SET NOCOUNT ONでSQLクエリを開始すると、SQLはカウントメッセージを出力しません。

関連する問題