0

.netWeb サービスを使用して大量のデータ (1000 行以上) をインポートする必要があります"network timeout error"

データ全体をインポートする方法は何ですか?

4

2 に答える 2

1

この問題は、接続タイムアウトが期限切れになる前に 1000 行すべてをデータベースに挿入するのに時間がかかりすぎることに関連している可能性が高いと思います。

この問題を回避するには、2 つの方法が考えられます。

接続タイムアウトを増やすか、これは最善の解決策ではない可能性があります。インターネット接続に小さな問題があった場合、またはデータベースが配置されているサーバーの実行速度が通常よりも遅かった場合、一部のレコードが挿入されても、すべてのレコードが挿入されない可能性があります。

個人的には、クエリを分割して、たとえば一度に 100 行しか返らないようにするのが最善の方法だと思います。つまり、最初の 100 を取得してデータベースに挿入し、正常に完了すると次の 100 レコードを取得し、Web サービスを呼び出してその 100 行を挿入し、成功すると次の 100 レコードを取得します。

お役に立てれば。

于 2013-10-31T14:16:20.577 に答える
0

タイムアウトの問題を克服するには、 にタイムアウトを実装する必要がありますHttpClient

タイムアウトには 2 種類あります。

  1. 接続タイムアウト : 接続が確立されるまでのタイムアウトを設定します。
  2. セッション タイムアウト : デフォルトのソケット タイムアウト (SO_TIMEOUT) をミリ秒単位で設定します。これは、データを待機するためのタイムアウトです。

以下のようにタイムアウトを設定する必要があります。

HttpParams httpParams = new BasicHttpParams();

//50 secs connection time out
HttpConnectionParams.setConnectionTimeout(httpParams,50 * 1000); 
//50 secs session time out
HttpConnectionParams.setSoTimeout(httpParams, 50 * 1000); 

HttpClient httpClient = new DefaultHttpClient(httpParams);
于 2013-10-31T13:53:51.103 に答える