【发布时间】:2011-12-06 03:04:07
【问题描述】:
我在 Eclipse EE 上运行 Apache Derby 服务器。
我的问题是,每当我尝试向数据库中插入(相对)大量记录时,它都会告诉我操作成功,但经过检查,许多记录实际上并未插入。
例如,我有一个 sql 文件,它在一个语句中将 400 条记录插入到数据库中,没有问题,所有记录都插入了。但是,当我尝试插入一个包含大约 800 条记录的文件时,最终只有大约 350 条记录被插入。它按照在文件中给定的顺序插入记录,然后在某个点不插入它们,尽管告诉我它已成功。
包含 8000 条记录的文件也存在同样的问题。即使我将其拆分,表中也只能看到少数记录。
这可能是什么原因造成的,我该如何解决?
编辑:额外信息:
我正在将一个 sql 文件加载到 eclipse 中,将其连接配置文件设置为 derby 数据库,并对该文件使用“全部执行”命令。
这是一个此类文件内容的截断示例。在分号之前会有大约 800 行。
INSERT INTO db.GAME VALUES
(2010, 'South Africa', 2010, 'Mexico', 11, 06, 2010, 'Group Match'),
(2010, 'Uruguay', 2010, 'France', 11, 06, 2010, 'Group Match'),
(2010, 'South Africa', 2010, 'Uruguay', 16, 06, 2010, 'Group Match'),
(2010, 'France', 2010, 'Mexico', 17, 06, 2010, 'Group Match'),
(2010, 'Mexico', 2010, 'Uruguay', 22, 06, 2010, 'Group Match'),
(2010, 'France', 2010, 'South Africa', 22, 06, 2010, 'Group Match'),
(2010, 'Argentina', 2010, 'Nigeria', 12, 06, 2010, 'Group Match'),
(2010, 'Korea Republic', 2010, 'Greece', 12, 06, 2010, 'Group Match'),
(2010, 'Greece', 2010, 'Nigeria', 17, 06, 2010, 'Group Match');
执行此操作后,状态窗口将显示 sql 文件的内容,然后是
"(772 rows affected)
Elapsed Time: 0 hr, 0 min, 0 sec, 1 ms."
SQL 结果窗口的状态为“成功”,并将操作列为“INSERT INTO db.GAME...”
我不确定在哪里可以访问您所说的德比日志。
【问题讨论】:
-
我认为您应该从收集更多信息开始:您如何进行插入?你用什么工具?你能显示代码吗?你能包括插入的确切输出吗?德比日志说什么? “告诉我它成功了”是什么意思?
-
刚刚添加了一些信息,希望对您有所帮助
-
是否有可能实际上所有行都被插入了,但是 Eclipse 的 SQL 结果窗口正在截断输出?我知道 SQL Squirrel 有一个可配置的“最大行数”参数,如果您尝试使用更多行数,则必须显式设置更高的参数。
-
谢谢,这就是问题所在。我实际上应该执行一个查询来查看输出,而不仅仅是查看结果窗口。
-
顺便说一句,您能否将您的解决方案添加为单独的答案并接受它,以便为将来的读者很好地打包问题?