0

次の列を持つSQLServer2005で作成されたテーブルがあります。

Fname (char (50)),
MailFrom (char (50)),
MailTo (char (50)),
Subject (char (50)),
MBody (char (100)),
MailID (int)

テーブルに行を入力した後、それらを抽出して、各列にテキストフィールドを持つテキストファイル/ドキュメントファイル/ウィンドウフォームのいずれかに保存します。

データベースからデータを抽出してファイルに保存するための最良の方法を取得するための提案。

4

2 に答える 2

5
using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlCommand com = new SqlCommand("Select * from mytable", conn);
    DataReader reader = com.ExecuteReader();

    using (TextWriter writer = new TextWriter("myFile.txt"))
    {
        while (reader.Read())
        {
            StringBuilder myData = new StringBuilder();
            myData.Append(reader["Fname"].ToString();
            //etc - see how you want to format it

            writer.WriteLine(myData.ToString());
        }
    }
}
于 2012-10-25T16:14:48.050 に答える
0

最初の解決策:SQLサーバーのみを使用する場合は、bcpコマンドを使用する必要があります。

bcpに注意する必要があるいくつかの事実:

  1. デフォルトではデフォルトのSQLインスタンスに接続するため、ボックスに複数のSQLサーバーインスタンスがあり、他のインスタンスからデータを取得する予定の場合は、サーバーを指定する必要があります。
  2. ストアドプロシージャを使用してデータを取得している場合、その中で一時テーブルを使用することはできず、変数テーブルのみを使用できます。
  3. 出力はUTF16になりますが、残念ながらUTF8で出力することはできません。

ここで、bcpに関する詳細情報を入手できます:http://msdn.microsoft.com/en-us/library/ms162802(v = sql.90).aspx

    ....

    SET @SQLQuery='bcp "EXEC storedprocedure  " queryout C:\SomeFolder\'+@FileName+ ' -w -r " " -t -T -C1252 -S '+@ServerName
    PRINT @SQLQuery

    EXEC @RC = master..xp_cmdShell @SQLQuery

    ....

2番目の解決策は、SSISパッケージを使用してファイルにエクスポートすることです。

DataFlowTaskを使用し、データベースソースとフラットファイルの宛先を使用する必要があります。

SQL 2008 R2の例はここにありますが、2005年でもそれほど変わらないはずです。

http://www.kodyaz.com/ssis/export-to-text-file-using-ssis-package.aspx

Haedrianがプログラミング言語の使用を提案した3番目のソリューション。

于 2012-10-27T10:52:38.797 に答える