ユーザーの知識に応じて、firebird 組み込みおよび/または postgres を使用するアプリケーションを開発しています。firebird 組み込みの議論は、インストール、ファイアウォール、UAC などの問題が少ないはずだということです。これまでのところ、postgres は雲の上を歩くようなものですが、firebird で障害物にぶつかりました。アプリは .net で、このプロバイダーを使用していますhttp://www.firebirdsql.org/en/net-provider/バージョン 3.0.2
技術的にはすべて機能しますが、firebird が埋め込まれている場合、1 秒あたり約 100 レコードしか挿入できませんが、postgres では 1 秒あたり 3000 を超えます! postgres を使用して、大量の INSERT INTO... ステートメントを 1 つのコマンドとして起動しますが、問題ありません。firebirdの場合、うまくいきません。これが(ゆっくりと)機能するものです
String query = @"INSERT INTO Customers(ID, Name, SiteID) VALUES(1,'delta',2);
INSERT INTO Customers(ID, Name, SiteID) VALUES(2,'phoenix',2);
";
FbScript fbs = new FbScript(query);
fbs.Parse();
FbConnection fbc = new FbConnection(ConnectionString);
FbBatchExecution fbe = new FbBatchExecution(fbc, fbs);
fbe.Execute(true);
ただし、解析なしでやろうとしています。ここでの2番目の回答に似たものisqlを使用してfirebirdデータベースに対して複数の挿入クエリを実行するか、ここhttp://www.firebirdfaq.org/faq336/
String sql = @"set term ^ ;
EXECUTE BLOCK AS BEGIN
INSERT INTO Customers(ID, Name, SiteID) VALUES(1,'delta',2);
INSERT INTO Customers(ID, Name, SiteID) VALUES(2,'phoenix',2);
end^";
FbCommand cmd = new FbCommand();
PrepareCommand(cmd, connection, (FbTransaction)null, CommandType.Text, sql, commandParameters, out mustCloseConnection);
cmd.ExecuteNonQuery();
これで私は例外を取得します
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 5
term
最初の方法だけですか?とても遅いです:(