2017-05-04 4 views
0

私はcsvファイルへのパスを含むURLにヒットしたWebアプリケーションとWindowsアプリケーションを実装しました。私はWebClientを使用してファイルをダウンロードし、次に.csvからデータを読み取り、SQL Serverテーブルに書き込みます。URLからCSVをインポートし、ファイルをダウンロードせずにSQL Serverテーブルに保存してください

.csvをダウンロード/保存せずに、ストアドプロシージャを使用してURLの.csvをSQL Serverテーブルに書き込むことなくこれを行う方法はありますか?

以下は、私の動作中のC#コードのスニペットです。

URL_VALUE = "http://test.url.com/table.csv?test.csv"; 
string csvPath = "~C:\\SaveFile\\test.csv"; 

WebClient client = new WebClient(); 
client.DownloadFile(@URL_VALUE, csvPath); 

writeToSQL(csvPath, Symbol); 

// Code snippet for SQL Write operation 
public void writeToSQL(string url, string filepath) 
{ 
    using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connection)) 
    { 
     // Set the database table name 
     sqlBulkCopy.DestinationTableName = "dbo.csv_PopulateData"; 

     sqlBulkCopy.ColumnMappings.Add("Col1", "Val1"); 
     sqlBulkCopy.ColumnMappings.Add("Col2", "Val2"); 
     sqlBulkCopy.ColumnMappings.Add("Col3", "Val3"); 

     sqlBulkCopy.WriteToServer(table); 
    } 
} 
+1

これが可能であろうとなかろうと、セキュリティの観点からは、私はいつもデータベースがインターネットに直接通信することを避けています。 –

+1

ヘッドアップありがとう! JSON/XML形式のhttpResponseを取得し、SQL Server Tableに書き込むRESTFull APIを作成しようとします。 –

+0

'HttpWebRequest'メソッドと' HttpWebResponse'メソッドを使用して、URLにある '.csv'ファイルからデータを取り出し、SQL Serverテーブルに書き込むことができました。 –

答えて

0

私はURLに.csvファイル存在からデータを取得し、SQL Serverのテーブルに書き込むことができましたHttpWebRequestHttpWebResponse方法を使用して。

public void getFileData() 
    { 
     try 
     { 

      Uri CSVUri = new Uri("URL"); 
      WebRequest = (HttpWebRequest)HttpWebRequest.Create(CSVUri); 
      webResponse = (HttpWebResponse)WebRequest.GetResponse(); 
      if (webResponse.StatusCode == HttpStatusCode.OK) 
      { 
       System.IO.StreamReader strReader = new System.IO.StreamReader(WebRequest.GetResponse().GetResponseStream()); 
       //create datatable with column names (Headers) 
       Createtable(strReader.ReadLine()); 
       String SingleLine; 
       while ((SingleLine = strReader.ReadLine()) != null) 
       { 
        AddRowtable(SingleLine); //Add data into dataset 
       } 

       GridView1.DataSource = datatable1; 

       using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) 
       { 
        foreach (DataColumn c in datatable1.Columns) 
        bulkCopy.ColumnMappings.Add(c.ColumnName, c.ColumnName); 

        bulkCopy.DestinationTableName = "dbo.tableName"; 
        try 
        { 
         bulkCopy.WriteToServer(datatable1); 
        } 
        catch (Exception ex) 
        { 
         string display = "Exception Occured"; 
         ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + display + "');", true); 
        } 
       } 

       if (strReader != null) strReader.Close(); 
      } 
     } 
     catch (System.Net.WebException ex) 
     { 
      string display = "Exception Occured"; 
      ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + display + "');", true); 
     } 
    } 
関連する問題