簡単な質問:
SQL Server 2005 に対して半ダースの SELECT 要求を作成し、結果をフラット ファイルに書き込む必要があるアプリがあります。それでおしまい。
.NET 3.5 を使用できれば、LINQ-To-SQL モデルを作成し、LINQ 式を記述して 1 時間で完了します。.NET 3.0 または 3.5 を使用できない場合、次善の策は何ですか? ADO.NET DataReaders/DataSets は最適なオプションですか、それとも他の利用可能なものを忘れていますか?
簡単な質問:
SQL Server 2005 に対して半ダースの SELECT 要求を作成し、結果をフラット ファイルに書き込む必要があるアプリがあります。それでおしまい。
.NET 3.5 を使用できれば、LINQ-To-SQL モデルを作成し、LINQ 式を記述して 1 時間で完了します。.NET 3.0 または 3.5 を使用できない場合、次善の策は何ですか? ADO.NET DataReaders/DataSets は最適なオプションですか、それとも他の利用可能なものを忘れていますか?
SqlCommand および SqlDataReader クラスを使用するのが最善の策です。結果をフラット ファイルに書き込む必要がある場合は、DataSet に移動する代わりにリーダーを直接使用する必要があります。これは、後者が結果をフラット ファイルに書き出す前にメモリにロードするためです。
SqlDataReader を使用すると、データをストリーミング形式で読み取ることができるため、この状況でアプリをよりスケーラブルにすることができます。
Nick K が serverfault に関する SQL Server 2000の質問にとても親切に答えてくれたように、bcp ユーティリティはこれに非常に便利です。
クエリで BCP を呼び出すバッチ ファイルまたはクイック スクリプトを作成し、csv,sql をテキスト ファイルに直接ダンプすることができます。
上記の Dave Van den Eynde の回答に同意しますが、これらのファイルに大量のデータをプッシュしている場合、およびアプリがそれをサポートできるものである場合は、SSISパッケージの作成を検討する価値があると言えます。 .
これは完全にやり過ぎかもしれませんが、一括インポート/エクスポートでは見過ごされがちです。
または、コードを書かずに BCP.exe を使用することもできます: http://msdn.microsoft.com/en-us/library/ms162802(SQL.90).aspx