SqlBulkCopyはExcelシートからすべての行をコピーしません

sqlbulkcopy sql-server vb.net

質問

Excelファイルを読み込んでSQL Serverのデータベーステーブルに書き込むためのWindowsアプリケーションを開発しました。アプリケーションは正常に動作しますが、Excelシートの27行目から30行目から、29行目から書き込みを開始します。私はすべての行を1行目から4500行目までのデータベーステーブルに書き込む必要があります。

私のコード:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim fdlg As OpenFileDialog = New OpenFileDialog
    fdlg.Title = "Open File Dialog"
    fdlg.InitialDirectory = "C:\"
    fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*"
    fdlg.FilterIndex = 2
    fdlg.RestoreDirectory = True
    If fdlg.ShowDialog() = Windows.Forms.DialogResult.OK Then
        ExcelFileName = fdlg.FileName
    End If

    'Excel 2007
    Dim ExcelConnection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelFileName + ";Extended Properties=""Excel 12.0 Xml;HDR=No;""")
    Try
        ExcelConnection.Open()
    Catch ex As Exception
    End Try

    Dim expr As String = "SELECT * FROM [Sheet1$]"

    Dim objCmdSelect As OleDbCommand = New OleDbCommand(expr, ExcelConnection)
    Dim objDR As OleDbDataReader

    Dim SQLconn As New SqlConnection()
    Dim ConnString As String = "Data Source=My_PC_Name;Initial Catalog=myDatabase;Integrated Security=True"
    SQLconn.ConnectionString = ConnString
    SQLconn.Open()

    Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(SQLconn)

        bulkCopy.DestinationTableName = "ItemDetails"

        Try
            objDR = objCmdSelect.ExecuteReader
            If objDR.HasRows = True Then
                bulkCopy.WriteToServer(objDR)
                MessageBox.Show("You Successfuly import the excel file")
                objDR.Close()
                SQLconn.Close()
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Using
End Sub

人気のある回答

SQLは、定義ごとに順序付けされていません。したがって、順序を保証するには、row_idにヘルパー列(たとえば、列A)を追加する必要があります。あなたはそれを使用して、注文したデータを後で選択することができます。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ