問題タブ [libpqxx]
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.
c++ - libpqxx によるデータの一括読み込み
libpqxx を使用して、大量のデータ (約 7.000.000 エントリ) を PostgreSQL データベースに一括ロードする必要があります。データベースにデータを入力する方法に関するドキュメントを読みましたが、私の場合にこれを使用する方法がわかりません。まず、ファイルを使用できないため、データベース上のCOPYは論外です。また、ロードしているデータベースとテーブルは、インポート中に機能する必要があります。
シナリオは次のとおりです。すべてのデータ (既存のエントリを含む) を含むファイルを別のアプリケーションから定期的に (約 1 か月に 1 回) 取得します。エントリの量が多いため、各エントリの存在を確認することはできず、(前処理後に) 新しいデータを一括挿入するだけです。
現在、これを処理するために、新しいテーブルを作成し、libpqxx のテーブルライターを使用して (トランザクションなしで) データを挿入し、トランザクションで古いテーブルの名前を変更し、新しいテーブルを正しい場所に変更します。
また、これは 1 つのテーブルに対してだけでなく、レイアウトが異なる複数のテーブルに対して行う必要があります。したがって、テーブルの書き込みと日付の解析を分離しようとしました。ここで、テーブルの作成を除外する必要があります。このために私は
このようにして、次のようなテーブルが得られ、foo
実際に書いている場所のレイアウトを知る必要はありません。ただし、これにより、インデックスと制約を含むテーブルが生成され、上記のガイドでは、インデックスによって一括挿入が遅くなるという問題が残ります。ただし、インデックスと制約を削除した場合 (または最初にコピーしなかった場合) は、元のテーブルに設定されていたのと同じ方法で後で再作成する方法が必要です。
これを迅速に処理する方法に関する良いヒントはありますか?
編集:
関連する側面: 先ほど気付いたデータベースをいじってみると、CREATE TABLE
上記は外部キー制約をコピーしないため、これらも手動で指定する必要があるようです。または、これらを他のすべての制約と一緒に処理する方法はありますか?
c++ - libpqxx を使用した Postgre データベースへの接続
クラスを作成して、libpqxx を使用して postgres データベースに接続しています。
というエラーが表示されます
誰でも私を助けることができますか?
ありがとう
c - PostgreSQLとlibpqに関するステートメントの特定
ばかげているように聞こえるかもしれませんが、libpqを使用してCプログラムで作業しているときに、どの種類のSQLステートメント(INSERT、SELECT、UDATEなど)がPostgreSQLでプリペアドステートメントを持っているかを特定する必要があります。
少し違う説明をさせてください。PostgreSQLデータベースへのアクセスを提供するlibpqライブラリを使用して、Cで小さなアプリケーションを開発しています。PostgreSQLで(PQprepareコマンドを使用して)プリペアドステートメントがありますが、実行する前に、SQLステートメントの種類(SELECT、...)を知りたいと思います。
なぜあなたは尋ねるかもしれませんか?アプリケーションが別のソースからSQLクエリを読み取る、つまりハードコーディングされていない、とだけ言っておきましょう。もちろん、PostgreSQLに送信する前にアプリのSQLを解析することもできますが、PostgreSQLがそれを実行できると非常に便利です。
例として、OracleはOCIライブラリを介してこの情報を返すことができます。
c++ - libpqxx C ++ライブラリ関数によってスローされた例外タイプを推測するにはどうすればよいですか?
私はlibpqxxを使用していますが、次の問題に悩まされています。
のいくつかの関数は、ファイルのように、pqxx:connection_baseクラスが例外をスローすると言うことができconnection_base.hxx
ます:
私の質問は、どのような種類の例外がスローされるかをどのように推測できるかということです。、、を期待しpqxx::exception
ますpqxx::sql_error
か?インクルードファイルは私には役に立たないように思えます。ドキュメント、Doxygenで生成されたファイルは明らかに役に立ちません。
c++ - libpq/libpqxxを使用した入力サニタイズ
PostgreSQLデータベース用のクライアントソフトウェアの実装を始めたばかりです。
クエリは、信頼できないソースからの入力パラメータを許可します。したがって、実際にコミットする前に、トランザクションをサニタイズする必要があります。
libpqに関しては、私はPQescapeStringConnを見つけました、それは私が必要とするかもしれません。ただし、私のコードはC ++で記述されるため、同等のlibpqxxを使用することをお勧めします。関連するものは見つかりませんでした。(おそらく内部名前空間にあるEscaperを除いて...)
ベストプラクティス、読書、ドキュメントへのリンクなどに関する提案をいただければ幸いです。
c++ - Libpqxx 接続プール
libpqxx ライブラリを使用して、非常にシンプルでわかりやすい接続プールを開発しようとしています。私はC ++にまったく慣れていないので、ポインターと参照についてまだ非常に混乱しています。クラスの動作は非常に単純です。初期化された接続を持つベクターを用意し、必要なときに接続をベクターにポップおよびプッシュします。ポインターと参照の不適切な実装により、コードには多くのエラーがあります。ヒントを教えてください。
編集:すべてのコンパイル エラーを修正できました。メイン関数を実行すると、セグメンテーション違反が発生します。
公衆:
プライベート:
};
c++ - データベース接続なしの文字列エスケープ
開いている pqxx::connection にアクセスせずに文字列エスケープ機能を使用しようとしています。
次のコードを検討してください。
接続が切断されたことがスローされます。これを達成する別の方法がある場合(できればデータベース接続なしで)、誰かがサインをくれますか?私は何かを見落としましたか?
アップデート:
libpqのドキュメントで、この機能にアクティブな接続が必要な理由について考えられる理由を見つけました。
PQescapeStringConn との唯一の違いは、PQescapeString が PGconn またはエラー パラメータをとらないことです。このため、接続プロパティ (文字エンコーディングなど) に応じて動作を調整できず、誤った結果が生じる可能性があります。また、エラー状態を報告する方法もありません。
c++ - notify_listener の使用 - libpqxx
libpqxxを使用して通知イベントをリッスンしようとしています。拡張された例から始めましたpqxx::notify_listener
。
私はこれを機能させることができませんでした。
pqxx::notify_listener(c, "my_schema")
name パラメータをなどに切り替えてみまし
pqxx::notify_listener(c, "listen my_schema")
た。
pgAdmin を使用して NOTIFY イベントを手動で作成しています。私が何をしても、ファンクターは実行されません。
c++ - PQXX リンク エラーの問題
PQXX for PostgreSQL のビルドに成功しました。これは CODE::BLOCKS IDE を使用した Windows 7 および MinGW 用です。多くのバグ ハンティングの後、ほとんどリンクしているプログラムができました。これらの 3 つの奇妙なエラーが表示されます。
fu000001.o:(.idata$2+0xc)||`libpqxx_a_iname' への未定義の参照|
fu000004.o:(.idata$2+0xc)||`libpqxx_a_iname' への未定義の参照|
nmth000000.o:(.idata$4+0x0)||` nm __ZTVN4pqxx14connect_directE' への未定義の参照|
私はここでちょっと途方に暮れています。どんな助けもいただければ幸いです
-ローランド