.net 4 sql批量插入64位iis 7

.net 64bit iis sqlbulkcopy unicode

我需要從txt / csv文件導入asp.net應用程序中的一些批量數據

到目前為止我使用的是SqlBulkCopy,但是現在使用64位的iis7它不起作用。有很多關於噴氣機沒有使用64位的帖子。

我讀到iis可以配置為在32位模式下工作,但id通過64位保持性能盡可能好。

另外,我從來沒有設法讓sqlbulkcopy使用擴展屬性(你可能會在這裡看到https://stackoverflow.com/questions/4305502/net-sqlbulkcopy-with-unicode-chars或這裡http://forums.asp。 net / p / 1627034 / 4184689.aspx#4184689?SqlBulkCopy + DATAFILETYPE + widechar

所以問題是,是否有另一種/更好的方法通過.net將批量記錄導入mssql?使用64位工作正常的東西,並允許自定義unicode和文件類型?

謝謝大家的幫助!

一般承認的答案

謝謝你的回答,伙計們。

雖然看起來最簡單的方法是手動。所以我開始自己寫一些代碼。如果有人可能對此感興趣,可以在這裡發布

它可能無法覆蓋所有內容,但它非常靈活。

它確實使用了我的一些輔助函數等,這裡沒有列出,所以如果你正在讀這個並且無法弄清楚的東西,那麼很高興能夠詳細說明:-)

Sub ImportFile(ByVal FilePath As String, ByVal RecordType As ObjectType, Optional ByVal HasHeaders As Boolean = True, Optional ByVal RowDelimiter As String = ControlChars.Tab, Optional ByVal CellDelimiter As String = ControlChars.NewLine)
    Dim objReader = New StreamReader(FilePath)
    Dim strContents = objReader.ReadToEnd
    objReader.Close()
    Dim Columns = New List(Of String)
    Dim axName = ObjectType.Account.GetType.Assembly.FullName
    Dim objRecord = Activator.CreateInstance(axName, RecordType.ToString).Unwrap
    Dim dcx = DBContext()
    dcx.EditLogging = False
    Dim tbl = dcx.GetTable(objRecord.GetType)

    Dim TableColumns = New List(Of String)
    For Each p In objRecord.GetType.GetProperties
        If (p.PropertyType.BaseType IsNot Nothing AndAlso p.PropertyType.BaseType.Name = "ValueType") Or p.PropertyType Is "".GetType Then TableColumns.Add(p.Name)
    Next

    Dim Rows = Split(strContents, RowDelimiter).ToList
    If HasHeaders Then
        Columns = Rows(0).Split(CellDelimiter).ToList
        Rows.RemoveAt(0)
        'check validity
        For Each clm In Columns
            If Not TableColumns.Contains(clm) Then Throw New ApplicationException(clm & " is not a valid column name.")
        Next
    Else
        Columns = TableColumns
    End If
    For Each row In Rows
        objRecord = Activator.CreateInstance(axName, RecordType.ToString).Unwrap
        Dim Cells = row.Split(CellDelimiter)
        For i = 0 To Cells.Count - 1
            SetObjProperty(objRecord, Columns(i), Cells(i))
        Next
        tbl.InsertOnSubmit(objRecord)
    Next
    dcx.SubmitChanges()
End Sub

熱門答案

你可以得到x64 Jet,但不確定SqlBulkCopy是否支持它,

http://blogs.msdn.com/b/psssql/archive/2010/01/21/how-to-get-a-x64-version-of-jet.aspx



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因