2017-05-04 90 views
0

我已经实现了一个web和Windows应用程序,该应用程序击中包含csv文件路径的URL。我使用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

感谢您的领导!我将尝试编写一个RESTFull API,它将以JSON/XML格式获取httpResponse,然后写入SQL Server表。 –

+0

使用'HttpWebRequest'和'HttpWebResponse'方法我能够从URL上的'.csv'文件中提取数据并写入SQL Server表。 –

回答

0

使用HttpWebRequestHttpWebResponse方法,我能够从目前.csv文件拉动URL数据并写入到一个SQL Server表。

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); 
     } 
    } 
相关问题