ADO.NET에서 동적으로 생성 된 임시 테이블로 대량 복사

ado.net sqlbulkcopy

문제

ADO.NET을 통해 임시 테이블을 만들고 BulkCopy 수행 한 다음 임시 테이블과 실제 테이블간에 서버에 Merge 을 수행해야합니다.

문제는 순수 ADO.NET을 사용하여 임시 테이블 동적을 만드는 것입니다. 스키마는 기존 테이블과 같아야하지만이 테이블은 ORM (NHibernate 또는 Entity Framework, 아직 확실하지 않음)을 사용하여 생성됩니다. 이것은 스키마가 앞으로 변경 될 수 있음을 의미합니다.

일반 ADO.NET 개체를 사용하여 데이터베이스에 테이블을 만드는 방법이 있습니까? 원본 테이블의 스키마를 포함하는 DataTable 같은?

나를 올바른 방향으로 향하게하는 어떤 정보라도 감사 할 것입니다.

수락 된 답변

나는 기존 스키마를 기반으로 임시 테이블을 만들 수 있었다.

내 사이트에 솔루션을 블로깅했습니다 .


인기 답변

select into #somename을 사용하여 임시 테이블을 만들 수 있습니다.

connection_ = New SqlClient.SqlConnection(connection_string_)
connection_.Open()
If connection_.State = ConnectionState.Open Then

    command_.Connection = connection_
    command_.CommandType = CommandType.Text
    command_.CommandText = "select * into #some_table from some_table where some_id = 0"
    command_.ExecuteNonQuery()

    Dim line_index_ As Integer = 0
    Dim data_table_ As DataTable = New DataTable()
    Using parser_ As FileIO.TextFieldParser = New FileIO.TextFieldParser(path_)
        parser_.SetDelimiters(delimiter_)
        parser_.HasFieldsEnclosedInQuotes = False
        While Not parser_.EndOfData
            If line_index_ = 0 Then
                Dim headers_ As String() = parser_.ReadFields()
                For Each header_ In headers_
                    data_table_.Columns.Add(header_)
                Next
            Else
                Dim row_ As DataRow = data_table_.NewRow()
                row_.ItemArray = parser_.ReadFields()
                data_table_.Rows.Add(row_)
            End If
            line_index_ += 1
        End While
     End Using

     Using bulkCopy_ As SqlBulkCopy = New SqlBulkCopy(connection_)
           bulkCopy_.DestinationTableName = "#some_table"
           bulkCopy_.WriteToServer(data_table_)
     End Using

    ' proof
    command_.CommandText = "select * from #some_table"
    Dim reader_ As SqlDataReader = Nothing
    reader_ = command_.ExecuteReader
    line_index_ = 0
    While reader_.Read
        line_index_ += 0
    End While

 End If


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.