1

私が勤務している会社には大規模なデータベースがあり、1 つのテーブルに何百万ものレコードがあります。リモート サーバー間でテーブルを移行する C# プログラムを作成しました。

最初にデータをコピーせずに SMO を使用してすべてのテーブルを作成し、すべてのテーブルが作成された後にデータの挿入を行います。

非常に多くのレコードがあるため、レコードの挿入中は、すべての行が挿入されるまでコンソール ウィンドウは空白のままになります。データ量が非常に多いため、これには長い時間がかかります。

私が今欲しいのは、MSSQL インポート エクスポート データ ウィザードのように更新された n 行を印刷する方法です。
挿入部分は単純なinsert into select *クエリです。

4

2 に答える 2

1

SqlCommands を使用している可能性があるように思えます。

using (SqlConnection connection = new SqlConnection(Connection.ConnectionString) )
{
    using(SqlCommand command = new SqlCommand("insert into  OldCustomers select * from customers",connection))
    {
        connection.Open();
        var numRows = command.ExecuteNonQuery();
        Console.WriteLine("Affected Rows: {0}",numRows);
    }
}
于 2012-10-30T08:29:48.180 に答える
0

あなたは間違いなくOUTPUT条項を見る必要があります。MSDN に役立つ例があります。

using (SqlConnection conn = new SqlConnection(connectionStr) )
{
    var sqlCmd = "
                  CREATE TABLE #tmp (
                      InsertedId BIGINT                                             
                  );
                  INSERT INTO TestTable
                  OUTPUT Inserted.Id INTO #tmp
                  VALUES ....
                  SELECT COUNT(*) FROM #tmp";
    using(SqlCommand cmd = new SqlCommand(sqlCmd,conn))
    {
        conn .Open();
        var numRows = command.ExecuteNonQuery();
        Console.WriteLine("Affected Rows: {0}",numRows);
    }
}

また、そのような目的でストアド プロシージャを使用することをお勧めします。

于 2012-10-30T09:10:26.550 に答える