我要求inserting enormous data in table of firebird database around 40K entries
。我准备好了我的脚本,但是在使用flameRobin执行它时,UI一下子插入如此巨大的数据就永远挂起了。
我知道如果我以255个查询的块执行插入查询会很好,但我想知道在从scripts.sql文件读取时是否有bulk insert tool available for Firebird
来执行此类条目。
经过一些谷歌搜索后,我遇到了isql
工具,但无法对其执行脚本。有人可以指导我使用任何其他工具或正确的文档一次性输入如此庞大的数据吗?
我的系统上安装了firebird version 2.5
。
答案 0 :(得分:7)
您可以使用EXECUTE BLOCK将更多插入内容填充到单个语句中。像这样:
set term !! ;
EXECUTE BLOCK AS BEGIN
insert into ... values ...;
insert into ... values ...;
insert into ... values ...;
insert into ... values ...;
....etc.
insert into ... values ...;
END!!
您可以一次100个或类似地将它们分组。这应该会使事情变得更快,并且还可以改善FlameRobin的解析。
isql仍然更快,但这可以让你更好地控制错误。如果中间的某些插入使用isql失败,那么调试内容真的很难。
答案 1 :(得分:5)
CONNECT "your_server:your_database_name" USER "sysdba" PASSWORD "masterkey";
INSERT ... ;
INSERT ... ;
....
INSERT ... ;
EXIT;
然后从dos提示符运行实用程序:
isql < your_script.sql
还要考虑为批量插入操作停用索引并删除表的外键,然后再恢复它们。
答案 2 :(得分:0)
您可以使用EXTERNAL
。
command.CommandText = @"CREATE TABLE TEMP1 EXTERNAL FILE 'c:\ExternalTables\Ext.ext'(ID INTEGER,CRLF CHAR(2));";
int j=command.ExecuteNonQuery();