2017-01-11 8 views
1

オンラインのMySqlデータベースをローカルのSqliteデータベースに保存しようとしています。私がしていることは、MySQLからデータテーブル全体のデータを取得してから、データテーブルからSqliteに保存しようとすることです。そこで、私はMySqlのデータをすべて "Console.printLine"を介して最初に数えることを確かめました。オンラインMySqlDatabaseからDataTableへの不完全なデータ

SELECT COUNT(REFENCE)を使用してMySqlのPhpMyAdminのデータをカウントすると、83,335行がカウントされますが、Console.WriteLineではインクリメント+1を使用して、最大3,857行しか取得できません。私が得ていることが不完全であると私に信じさせました。私が間違っている場所を教えてくれますか?場合は、オンラインMySqlの "テーブル"のデータをコピーするより良い方法は、Sqliteのテーブルには素晴らしいだろう。ありがとうございました。

private void buttonX1_Click(object sender, EventArgs e) 
{ 
    const string sql1 = 
      @"SELECT reference, DATE(trx_date) as 'date', chassis_nmbr, status, remarks, 
      approved_by, DATE(date_approved), branch_code FROM jobcomp_hdr;"; 
    var table = new DataTable("onlineData"); 
    using (var conn = new DwoAccess().ConnectToMySql()) 
    { 
     using (var cmd = new MySqlCommand(sql1, conn)) 
     { 
      try 
      { 
       cmd.CommandTimeout = 60; 
       var adapt = new MySqlDataAdapter(cmd); 
       conn.Open(); 
       adapt.Fill(table); 
      } 
      catch (Exception ex) 
      { 
       //ignore 
      } 
     } 
    } 
    var x=0; 
    foreach (DataRow row in table.Rows) 
    { 
      Console.WriteLine(row["reference"].ToString()); 
      x += 1; 
    } 
    Console.WriteLine(x.ToString()); 
} 
+0

詳細を見つけますか? 'Console.Clear()'を使うことができます。 Debug.WriteLine( "text"); 'デバッグモードでプログラムを実行すると、出力ウィンドウにメッセージが表示されます –

+0

私のポイントは実際には何がコンソールに書き込まれているのか分かりませんが、コンソール。 3,857のみ表示されますが、私のオンラインデータベースのデータは83,335です。これは83,335のうち3,857だけが「データテーブル」にダウンロードされたことを意味します。 – Ibanez1408

+0

例外はありますか? –

答えて

0

私はこの問題は、クエリタイムアウトを実行する際に、すべての行の数が大きくて長いにそれをされて実行することであると思います。だから、LIMITを使用して、数値行をスキップし、行数を取得するように設定することができます。 forループとテーブル内のすべての行の数量を使用すると、この場合はテーブルをいくつかの部分に分けて1,000個の項目を取ることができます。

とき `のx == 1000 '例えば、コンソールをクリアしないのはなぜここでは、MySQLでLIMITsamples

for (int i = 0; i <= rowsNumberInTable; i = i + 1000) 
{ 
    ... 
    string sql1 [email protected]"SELECT reference, DATE(trx_date) as 'date', chassis_nmbr, status, remarks, approved_by, DATE(date_approved), branch_code FROM jobcomp_hdr LIMIT " + i + @" ," + i+ 1000; 
    ... 
} 
+0

あなたはそうです、それはファイルサイズのためにダウンロードに時間がかかりすぎるからです。しかし、私がやったことは、日付の間だけデータをフィルタリングするようユーザーに求めていることです。しかし、あなたの提案は正しいと私はそれを試みるだろう... – Ibanez1408

関連する問題