2017-08-15 12 views
-1

SQL管理スタジオのFTPサイトにCSVファイルをエクスポートする方法を知っている人はいますか?私は現在、 幹部xp_cmdshellを「ftp://213.32.32 \ユーザー\ NET USE:fjdowjのddfdf」を使用しています は しかし、それはすべての最近のバージョンで(非常に良い理由のために)SQLを使用してCSVファイルをFTPサイトにエクスポート

+2

全く作業しないとはどういう意味ですか? 213.32.32は有効なIPアドレスではありません。 – mallan1121

+0

ありがとうございます。 SQLクエリが機能しません。本当に申し訳ありません、私はIPアドレスを偽った。しかし、私は実際のFTPサイトをテストしました。それは正常に動作しています。ファイルをアップロードしたり、ファイルを削除したりできました。私はCSVファイルをftpサイトにエクスポートできません。私は毎日SQLクエリを実行し、FTPサイトにcsvファイルをエクスポートするSQLジョブを持っています。問題は今、私はSQLでFTPサイトへの接続を確立する方法を知らないことです。 – user126253

答えて

-1

xp_cmdshellは、デフォルトでは無効になってすべての おかげで動作しません。 SQLサーバー。あなたはそれを手動でもう一度有効にすることができます(そして私はそうしないことをお勧めします)。しかし、アップロードを行うにはftpコマンドラインツールが必要です。私はnet useコマンドがトリックを行うつもりはないと思います。 SQL Serverサービスユーザーとしてnet useのドライブとしてftpエンドポイントをマップすると、FTPジョブを実行する前にSSMSからサーバー上のファイルシステムにファイルをコピーする必要があります。

+0

あなたの答えをありがとう。私はSQLでnet useを使って適合サイトをマッピングすることはできませんでした。これは本当に私の問題です。 FTPサイトに接続してCSVファイルをFTPサイトにエクスポートできるようにSQLで接続することをお考えの場合は、私は感謝します。 – user126253

0

CSVファイルを生成してFTPサイトにエクスポートするCLRストアドプロシージャを試すことができます。あなたはファイルを生成したら、FTPパスにロードするには、以下のアプローチを使用することができます

public static void GenerateCSVFile(SqlString queryToGetData, SqlString folderPath) 
     { 
      string sqlCommand; 
      string filePath; 
      try 
      { 

        sqlCommand = queryToGetData.ToString(); 
        filePath = folderPath.ToString() + "\\GeneratedFile" + ".csv"; 

       using (SqlConnection connection = new SqlConnection(
       "context connection=true")) 
       { 
        connection.Open(); 

        SqlCommand command = new SqlCommand(sqlCommand,connection); 
        using (SqlDataReader reader = command.ExecuteReader()) 
        { 
         DataTable table = new DataTable(); 
         table.Load(reader); 

         StringBuilder builder = new StringBuilder(); 
         List<string> columnNames = new List<string>(); 
         List<string> rows = new List<string>(); 

         foreach (DataColumn column in table.Columns) 
         { 
          columnNames.Add(column.ColumnName); 
         } 

         builder.Append(string.Join(",", columnNames.ToArray())).Append("\n"); 

         foreach (DataRow row in table.Rows) 
         { 
          List<string> currentRow = new List<string>(); 

          foreach (DataColumn column in table.Columns) 
          { 
           object item = row[column]; 

           currentRow.Add(item.ToString()); 
          } 

          rows.Add(string.Join(",", currentRow.ToArray())); 
         } 

         builder.Append(string.Join("\n", rows.ToArray())); 

         using (StreamWriter writer = new StreamWriter(filePath)) 
         { 
          writer.Write(builder.ToString()); 
         } 
        } 
       } 
      } 
      catch(Exception ex) 
      { 
       throw; 
      } 
     } 

:パスに

生成CSVファイルは以下の通りです。 FTP Directly in SQL

+0

あなたの答えをありがとう。私はCSVファイルを生成することができましたが、FTPサイトにCSVファイルを転送する際に問題が発生しています。私はSQLの記事であなたのFTPを直接読む。私はそれについていくつか質問があります。私は開始のステップがわからない。ビジュアル・クラシック・ライブラリーの作成方法の例を教えてください。私はまた、SQLのFTPサイトに接続する他の方法があるのは不思議でしたか?どうもありがとうございました – user126253

関連する問題