.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合法吗? 是的,了解原因