选择count doesnt不返回表中的所有行

时间:2013-06-04 06:27:57

标签: sql postgresql

我在数据库中有一个表,它应该有超过1k行。 DB是Postgress。我使用以下命令:

select count(*) from icdten;它返回1000,这是错误的

以及

select * from icdten;

返回前1000行,这是错误的我希望拥有所有这些行。谷歌搜索没有找到,或者我正在搜索错误的东西。

EDIT1:我使用PgAdmin,也许是PgAdmin问题..我只是没有通过界面找到该选项。它应该有14k行。

3 个答案:

答案 0 :(得分:0)

在PgAdmin中设置了可能的限制。请查看PgAdmin的“选项/查询”标签,如http://www.pgadmin.org/docs/1.4/options-tab3.html中所述(http://www.pgadmin.org/docs/1.16/options-tab4.html对于您提到的版本1.16):

要检索的最大行数可以设置为1000(默认值为100,人们通常会更改此值),并且“如果估计小于”则计算行数可能会影响到COUNT函数(它可以使用表统计中的计数而不是实数表计数,所以尽量将临时值设置为一个大数字)

答案 1 :(得分:0)

以下是解决此问题的方法:

  1. 首先尝试使用psql。虽然select count(*)应该在两者上给你相同,但也许会有一些事情发生。那里也没有限制,所以你可以:

    \o testfile
    \i select * from icdten
    \q (exits psql)
    wc -l testfile
    
  2. 如果仍然显示1000行,那么你可能在该表中有1000行,开始确保你连接到正确的数据库,查询你认为你的表等等。

    EXPLAIN ANALYSE
    
  3. 在这种情况下可能会有所帮助。

答案 2 :(得分:0)

这不是错误。它只是某些PostgreSQL版本中的默认参数集。 您可以通过转到PostgreSQL的安装目录并导航到def swap_case(s): l = list(s) for i in range(len(s)): if l[i].islower(): l[i] = l[i].upper() else: l[i] = l[i].lower() k = "".join(map(str,l)) return k 来更改参数。版本12的目录如下所示:

pgAdmin 4\web

使用文本编辑器打开C:\Program Files\PostgreSQL\12\pgAdmin 4\web ,然后搜索config.py。最初设置为ON_DEMAND_RECORD_COUNT

1000

您可以注释掉该行,但可能导致其他错误。我建议将其更改为较大的值,例如10,000,000。如果修改后无法保存文件,则需要将文件复制到其他位置,进行更改并保存,然后复制回原始文件夹并替换为原始文件。