2017-02-23 8 views
0

私は#の-prefixで保存されている一時テーブル用のSAP HANAデータベースとクエリに接続するためにRJDBCを使用しようとしている:はdbGetQuery()でハッシュタグを含める

test <- dbGetQuery(jdbcConnection, 
     "SELECT * FROM #CONTROL_TBL") 

# Error in [...]: invalid table name: Could not find table/view #CONTROL_TBL in schema USER 

私が実行した場合HANAのSQLステートメント、それは完全に正常に動作します。私は永久的なテーブルを照会することもできます。したがって、私はRがハッシュタグを通過しないと仮定します。しかし、"SELECT * FROM \\#CONTROL_TBL"のようなエスケープを挿入しても、私の問題は解決しませんでした。

答えて

0

特殊文字が含まれているため、テーブルを二重引用符で囲む必要があります(詳細はSAP Help, identifiersを参照)。

テスト< - dbGetQuery(JDBCConnectionの、 'SELECT * "#CONTROL_TBL" FROM')

stackoverflowにも関連する説明を参照してください。

+0

ありがとうございました。 Iveはそれを試みましたが、うまくいかないようです。私はまだ同じエラーメッセージが表示されます。一時テーブルを読み出すことに成功したことがありますか?たぶん、彼らは彼らが作成されたセッションでのみ生きている可能性があります? – laterstat

+0

ちょうどローカルtempのためにチェックされた。テーブル二重引用符は省略可能です。次のコードは引用符を省略しても機能します。 ローカル一時テーブル "#LTTEST"(key nvarchar(10)、 値nvarchar(100))を作成します。 "#LTTEST"(キー、値)の値( '1'、 'some value')に挿入します。 select * from "#LTTEST"; HANA SQLリファレンスでは、単純な識別子は{ | }、私はまだそれを引用します。 あなたはセッションについて正しいです。あなたはlocだけを照会することができます。 temp。同じセッションのテーブルでは、これがRで可能かどうかわかりません。 –

1

ローカルセッションテーブルまたはグローバルテンポラリテーブルのデータは、セッション固有のものであるため、別のセッションから照会することはできません。グローバルなテンポラリ・テーブルの場合、セッション間で共有されるため、テーブルのメタデータをクエリできます。

出典:Tutorial for HANA temporary tables

0

[OK]を、グローバル一時表は普通のテーブルのように表示されている間、ローカル・テンポラリ・テーブルは、常に彼らが定義されてきているセッションにのみ表示されますが、データはセッションのプライベートです。

したがって、ローカルのtempを作成した場合、テーブル(名前は#で始まる)を別のセッションで使用すると、それが見つからないのは不思議ではありません。

あなたの例としては、まず最初に一時テーブルが必要なのですか? その代わりに、たとえば次のようにすることができます。ビューまたは表関数を定義して、データを選択します。

関連する問題