ここでは、「|」で区切られた約400 MBの.txtファイルがあります。 C#でWindowsフォームを使用して、SQL Serverデータベースのテーブルに.txtファイルの各行を挿入します。テキストファイルからSQLサーバーにデータを挿入する(speed?メソッド?)
私は何をやっていることは、単純に、この(簡潔にするために、「...」で短縮される):
while ((line = file.ReadLine()) != null)
{
string[] split = line.Split(new Char[] { '|' });
SqlCommand cmd = new SqlCommand("INSERT INTO NEW_AnnualData VALUES (@YR1984, @YR1985, ..., @YR2012)", myconn);
cmd.Parameters.AddWithValue("@YR1984", split[0]);
cmd.Parameters.AddWithValue("@YR1985", split[1]);
...
cmd.Parameters.AddWithValue("@YR2012", split[28]);
cmd.ExecuteNonQuery();
}
さて、これが働いているが、それはしばらく取っています。膨大な量のデータを処理するのは今回が初めてのことなので、A)私はこれを効率的にやっていますし、B)私の期待はあまり高くありません。ループが起こっている間にSELECT COUNT()
を使用して
、私は数が上がると時間をかけて見ることができます。だから私は時計といくつかの基本的な数学を使って、物事が働いているスピードを見つけました。 60秒で、73881インサートがあった。これは1秒あたり1231インサートです。質問は、これは平均的なスピードですか、あるいはパフォーマンスが低下していますか?後者の場合、パフォーマンスを向上させるために何ができますか?
私は、SSISは、まさにこの目的のために効率的であることについて何かを読みました。しかし、WindowsフォームのボタンをクリックしてSISSを経由しないようにするには、このアクションが必要です。
これは私が必要としていたものです。 OutOfMemoryの例外を取得しているデータが非常に多かったため、私は最初にそれを使用する際に問題がありましたが、このポストは正しいパスに入れてくれます:http://stackoverflow.com/questions/9442171/a-way-out-from -getting-systemoutof mememory大文字からインポートまでのエクスプレッション – CptSupermrkt