私はSQL Serverクライアントの代わりに動作するはずのPostgreSQLデータベースクライアントを作成しています。どちらのクライアントもC++で書かれています。サポートされている操作の1つは、std::string ReadChunk()
メソッドを含むクラスの指定されたインスタンスからの一括コピーです。今のPostgres挿入前のデータフォーマットCOPY FROM
私はlibpqの機能を使用します。
PQexec(connection, "COPY tablename FROM STDIN");
while(reader.HasNext()) {
PQputCopyData(connection, reader.ReadChunk().c_str());
}
PQputCopyEnd(connection);
しかし、私は、あまりにも長いのvarcharを切り捨てると、彼らはNULL可能列を代表している場合\t
連続した2間NULL
を挿入することができなければならないことが判明しました。データベース側でこの変換を実行する方法はありますか?Cトリガーなどを作成する方法はありますか?または、クライアント側で引数解析を実装する必要がありますか?SQL Server bcp_bind
のようなものですか?