問題タブ [rpostgresql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - RPostgreSQL を使用した UTF-8 / Unicode テキスト エンコーディング
PostgreSQL データベースに直接リンクされている Windows マシンで R を実行しています。私はRODBCを使用していません。私のデータベースは、次の R コマンドで確認できるように UTF-8 でエンコードされています。
ただし、一部のテキストが R に読み込まれると、R では奇妙なテキストとして表示されます。
たとえば、次のテキストが PostgreSQL データベースに表示されます: "Stéphane"
R にエクスポートすると、次のように表示されます: "Stéphane" ( éはéとしてエンコードされます)
RI にインポートするときは、コマンドを使用しdbConnect
て接続を確立し、dbGetQuery
コマンドを使用して SQL を使用してデータを照会します。データベースに接続するときやクエリを実行するときに、テキスト エンコーディングをどこにも指定しません。
オンラインで検索しましたが、問題の直接的な解決策が見つかりません。私はこのリンクを見つけましたが、彼らの問題は私が使用していないRODBCにあります。
このリンクはシンボルを識別するのに役立ちますが、R で検索と置換を行いたいだけではありません...データが多すぎます。
以下のコマンドを実行してみましたが、警告が表示されました。
コマンドで警告が発生しSys.setlocale("LC_ALL", "en_US.UTF-8")
ます。私の直感では、これは Windows 固有の問題であり、Mac/Linux/Unix では発生しません。
r - RPostgreSQL で dbWriteTable(..., append=TRUE) で列のデフォルトを使用する方法
のdbWriteTable
関数はRPostgreSQL
列名を無視しているようで、R から PostgreSQL にデータをそのままプッシュしようとします。これは、既存のテーブルに追加するときに問題になります。特に、デフォルト値を指定する必要がある R オブジェクトに指定されていない列がある場合はそうです。
RMySQL は、カラム名を に追加することで、このケースを非常に適切に処理しますLOAD DATA LOCAL INFILE
。dbWriteTable
whenで指定されていない列にデフォルト値を割り当てるように RPostgreSQL に強制するにはどうすればよいappend=TRUE
ですか?
次に例を示します。
次の表が得られます。
R からこのテーブルに新しいデータを挿入したい:
しかし、次のエラーが表示されます。
これは、column_a
フィールドを指定していないためdbWriteTable
、column_b のデータを column_a に書き込もうとしているからです。dbWriteTable
のデフォルトを強制的に使用しcolumn_a
、適切に書き込みたいと思いcolumn_b
ますcolumn_b
。
次の場合にのみ失敗します。
- デフォルト値のない列の指定に失敗しました
- テーブルに存在しない列を挿入しようとしています
- 既存の列に間違ったデータ型を挿入します
linux - Linux への RPostgreSQL のインストール
RでLinuxを試してみると
不特定のエラーで失敗します。
私は問題を解決しようとしました:
しかし、うまくいかないようです。
私は PostgreSQL 9.1.11 バージョンを持っています。
r - RPostgreSQL インストール エラー - RPostgreSQL.so: 未定義のシンボル: PQpass
R-Package RPostgreSQL をインストールしようとしていますが、次のエラーが発生します。
私は持っlibpq
てpostgresql-dev
インストールしました。すべてのライブラリファイルはディレクトリにあります
/usr/lib64/pgsql/
すべてのヘッダーファイルはディレクトリにあります
/usr/include/pgsql/
Postgre版 - 9.3.4
R版 -3.0.2
オペレーティングシステム -CentOS-6.4
小さなことが欠けていますが、なぜこれが起こっているのかわかりません。
私は何を間違っていますか?これを修正する方法は?
java - PostgreSQL からデータにアクセスして計算を行うために Java で R コマンドを実行中にエラーが発生しました
私はPostgreSQLからデータを取得しようとしているJavaコードを書いており、その上で簡単な計算を行っています(中央値の計算)。まず、Java コード自体から RPostgreSQL ライブラリをロードし、次にドライバーをロードして、Java を介して R と PostgreSQL 間の接続を確立します。しかし、Java を介してクエリ コマンド (PostgreSQL から R にクエリを取得するために使用される) を起動しようとすると、次のようなエラーが発生します。
注: このエラーは解決されました。現在のエラー (スクリプト ファイル エラー) については、以下を参照してください。
私の現在のコードは次のとおりです。
R のバージョンを表示するような単純なコードは正しく実行されているため、Rserve 接続に問題はないと思います。
また、dbSendQuery() などの R から PostgreSQL へのコマンドの書き込み構文にも問題はありません。R 内から直接コマンドを使用する場合と同様に、完全に正常に動作します。だから、私が思う問題は、Javaで同じことを書くことです(Javaの対応する構文)。
更新 1: エラー 2 (このエラーは解決済みです)
@ on_the_shores_of_linux_sea からの提案を受けて、コードを少し変更しましたが、次のような別のエラーが発生しています。
エラーの原因と解決方法がわかりません
二次的な質問: R クエリまたはステートメントをファイル (特別な R 形式のファイルまたはその他の形式のファイル) に記述し、Java にそのファイルを読み取らせてプッシュすることができるかどうかも知りたいので、これは二次的な質問です。それらを実行するためにRコマンドをRに入れますか?
更新 2: スクリプト ファイル エラー
以下で言及されている方法1@on_the_shores_of_linux_sea
は現在正常に機能しています。私も方法 2 でやろうとしていますが、Java でスクリプトを管理するのが難しいです。私が使用しているJavaコードは次のとおりです。
印刷されている出力コンソールのエラーは次のとおりです。
私のスクリプトファイルの構文は次のとおりです。
エラーがスクリプト ファイルにあるのか、Java 構文にあるのかわかりません。
r - Postgresql によって R に返されたデータから SQL ステートメントを生成する
まず、postgresql から一連のレコードを返す次の R コマンドを実行しています。
返されたデータは、R を使用して印刷すると次の形式で表示されます。print(temp_list)
この返されたデータに基づいて、次のような別のSQLステートメントを生成したいと思います
私がこれをするとき
これを印刷すると、1つのステートメントtmp_cp
の代わりに一連のステートメントが印刷されます。select内の列名ごとに1つずつ、このように選択しますcopy
copy
copy
すべての列名が一緒に言及され、それぞれが で引用され、""
で区切られた1 つのステートメントのみが必要です,
。どうやってやるの?
更新:これらのステートメントを使用しているとき
次に、1 つのステートメントのみが生成されますが、列名は次のように二重引用符ではなく単一引用符で囲まれています。
注:上記で 4 つの列について言及しましたが、4 つの列しかないというわけではありません。