来自vb.net databale的oracle批量复制

时间:2016-06-15 11:53:22

标签: vb.net oracle

我正在将CSV文件加载到vb.net datatable。 然后我使用批量复制命令写入数据库。

问题是如果数据表中的一个日期单元格为空,我正在接收

ORA:-01840输入值不足以构成日期格式。

如何解决此问题。

Public Class Form1
Dim cn As New OracleConnection("Data Source =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = ipaddressofserver)(PORT = portofserver))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = oracleservicename)) ) ; User Id=useridofdb;Password=passwordofdb")
        cn.Open()
        MsgBox("connection opened")
        Dim dt As DataTable = ReadCSV("D:\test.csv")
 DataGridView1.DataSource = dt
 Try            
            Dim _bulkCopy As New OracleBulkCopy(cn)
            _bulkCopy.DestinationTableName = "TEST_TABLE"
            _bulkCopy.BulkCopyTimeout = 10800
            _bulkCopy.WriteToServer(dt)
            cn.Close()
            cn.Dispose()
            cn = Nothing
            MsgBox("Finished")
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
 Function ReadCSV(ByVal path As String) As System.Data.DataTable
        Try
            Dim sr As New StreamReader(path)
            Dim fullFileStr As String = sr.ReadToEnd()
            sr.Close()
            sr.Dispose()
            Dim lines As String() = fullFileStr.Split(ControlChars.Lf)
            Dim recs As New DataTable()
            Dim sArr As String() = lines(0).Split(","c)
            For Each s As String In sArr
                recs.Columns.Add(New DataColumn())
            Next
            Dim row As DataRow
            Dim finalLine As String = ""
            For Each line As String In lines
                row = recs.NewRow()
                finalLine = line.Replace(Convert.ToString(ControlChars.Cr), "")
                row.ItemArray = finalLine.Split(","c)
                recs.Rows.Add(row)
            Next
 Return recs
        Catch ex As Exception
            Throw ex
        End Try
    End Function
End Class

0 个答案:

没有答案