Informix SELECT FIRST返回较少的行

时间:2012-06-25 09:19:48

标签: c# odbc informix

我正在使用导入应用程序从Informix数据库中检索大约100万条记录,并将其批量插入MSSQL数据库中。查询很简单:SELECT * FROM <view_name>。要从Informix中获取数据,我使用的是ODBC读取器,在执行命令后,我将其直接传递给SQLBulkInsert。

问题在于:有时会检索所有数据。但是,有时候读者只检索记录#181 - 并且在发生此问题时始终记录此记录。所以我做了一个SELECT SKIP 180 FIRST 2 * FROM <view_name>来检查这些记录的数据是否没有损坏或者是什么,但似乎数据没问题。我还扩展了连接超时(即使连接打开后没有直接影响)。这是一个非常烦人的问题,因为它有时只会发生,并且始终是#182记录,它会阻止整个检索过程。

还有其他人有类似的问题吗?或者有没有人对可能导致这种情况的原因有任何想法?

这是我用来通过ODBC检索数据的大纲代码:

            OdbcCommand cmd = _conn.CreateCommand();
            cmd.CommandText = //sql statement;
            OdbcDataReader reader = cmd.ExecuteReader();
            return reader;

1 个答案:

答案 0 :(得分:1)

在某些情况下可能会发生这种情况。特别是当您从视图中进行选择时以及从连接中进行选择时,可能会出现此问题。原因是:不同的访问路径可能无法保证数据的来源。强烈建议在没有where子句,first,skip等的情况下对视图执行非常基本的查询(例如select * from)。