我正在開發一個ASP.Net站點,我想讓用戶導入一個CSV文件,其中每行數據可以插入或更新到MySQL數據庫中的1或2個表。 CSV文件的範圍可以從1到幾千行,大約6或7列。CSV通過ASP.NET到MySQL
我想知道是否有可能做到這一點沒有循環,雖然每行和調用存儲過程,同時仍然保護免受SQL注入,因爲這種方法似乎可能很慢?此外,我想知道這是怎麼回事,這將使我的網站對所有當前用戶沒有反應?
在此先感謝
我正在開發一個ASP.Net站點,我想讓用戶導入一個CSV文件,其中每行數據可以插入或更新到MySQL數據庫中的1或2個表。 CSV文件的範圍可以從1到幾千行,大約6或7列。CSV通過ASP.NET到MySQL
我想知道是否有可能做到這一點沒有循環,雖然每行和調用存儲過程,同時仍然保護免受SQL注入,因爲這種方法似乎可能很慢?此外,我想知道這是怎麼回事,這將使我的網站對所有當前用戶沒有反應?
在此先感謝
是,要做到這一點,最好的辦法是導入與ASP.NET SqlBulkCopy的一個臨時表。
然後使用TSQL複製到目標表。
將csv加載到DataTable中。
下面是代碼,你需要
使用連接作爲SqlConnection的=新的SqlConnection(康涅狄格州)
connection.Open()
Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connection, SqlBulkCopyOptions.TableLock, Nothing)
bulkCopy.DestinationTableName = "TempTable"
bulkCopy.BulkCopyTimeout = 60000
bulkCopy.BatchSize = 0
bulkCopy.WriteToServer(MyDataTable)
bulkCopy.Close()
End Using
connection.Close()
End Using
MySqlBulkLoader loader = new MySqlBulkLoader(connection);
loader.TableName = "table name";
loader.FieldTerminator = "\t";
loader.LineTerminator = "\n";
loader.FileName = "path file";
loader.Load();
不提供代碼解答。相反,請添加一些關於此代碼如何回答問題的解釋。 – ace 2015-11-24 14:59:41
好了十分感謝,我看着這個和它的出現SqlBulkCopy的不工作與MySQL,但相反,我發現MySqlBulkLoader似乎做同樣的事情,但MySQL。你知道如果MySqlBulkLoader防止SQL注入嗎? – Olly 2012-04-25 20:14:25
無論您選擇哪種方法,都需要在保存文件之前解析文件。將文件複製到內存中並逐行解析,然後將其保存到處理的文件夾中。在分析檢查SQL注入命令期間。 – 2012-04-26 11:54:32
好的,謝謝有任何API調用會解析它並刪除可能導致SQL注入的東西嗎?或者我需要自己手動對每個SQL命令進行分類,並刪除諸如「DROP」,「ALTER」,「GRANT」等分號和其他詞的內容? – Olly 2012-04-26 17:06:38