2017-04-14 129 views
0

我有大約12萬個excel數據,我需要導入到DataGridView然後將其保存到SQL Server數據庫。從excel導入大量數據到DataGridView並保存到數據庫中

將excel數據分解爲1000組數據並將其保存到數據庫的問題顯而易見的是,UI凍結。現在我甚至無法想象一次導入所有的一萬二千條數據,那麼上帝保佑我!

我該如何實現這個任務而不會凍結問題?我試着搜索並發現了關於DataGridView virtualmode屬性。我如何正確實施這一點,幫助我找到正確的方向。

+0

您是否嘗試過使用的BackgroundWorker?它會幫助你的用戶界面保持響應。 [看看](https://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v = vs.110).aspx) –

+0

@SDP,如果你使用線程for它。 –

+0

@MAdeelKhalid我會研究它,謝謝:) – Sdp

回答

0

'圖書館

Imports System.Data.SqlClient 
Imports System.IO 
Imports Microsoft.VisualBasic.FileIO 
Imports System.Data 
Imports System.Data.Odbc 
Imports System.Data.OleDb 

' LOAD DATA網格視圖

Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click 
    Dim cnn As SqlConnection 
    Dim connectionString As String 
    Dim sql As String 

    connectionString = "data source=Excel-PC\SQLEXPRESS;" & _ 
    "initial catalog=NORTHWIND;Trusted_Connection=True" 
    cnn = New SqlConnection(connectionString) 
    cnn.Open() 
    sql = "SELECT * FROM Orders" 
    Dim dscmd As New SqlDataAdapter(sql, cnn) 
    Dim ds As New DataSet 
    dscmd.Fill(ds) 
    DataGridView1.DataSource = ds.Tables(0) 
    cnn.Close() 

End Sub 

「從數據網格視圖到SQL Server

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 


    Dim headers = (From header As DataGridViewColumn In DataGridView1.Columns.Cast(Of DataGridViewColumn)() Select header.HeaderText).ToArray 
    Dim rows = From row As DataGridViewRow In DataGridView1.Rows.Cast(Of DataGridViewRow)() Where Not row.IsNewRow Select Array.ConvertAll(row.Cells.Cast(Of DataGridViewCell).ToArray, Function(c) If(c.Value IsNot Nothing, c.Value.ToString, "")) 
    Dim str As String = "" 
    Using sw As New IO.StreamWriter("C:\Users\Excel\Desktop\OrdersTest.csv") 
     sw.WriteLine(String.Join(",", headers)) 
     'sw.WriteLine(String.Join(",")) 
     For Each r In rows 
      sw.WriteLine(String.Join(",", r)) 
     Next 
     sw.Close() 
    End Using 

End Sub 

我不明白爲什麼加載過程會導致您的機器凍結。我從來沒有遇到過這個問題。

如果您想要一個非常快速的方式將數據加載到SQL Server,只需使用批量插入並擺脫整個數據網格視圖的事情。

BULK INSERT EmployeeDB.dbo.Employees 
FROM 'C:\Data\EmployeeData_c.dat' 
WITH 
    (
    DATAFILETYPE = 'char', 
    FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\r\n' 
); 

https://www.simple-talk.com/sql/learn-sql-server/bulk-inserts-via-tsql-in-sql-server/