Vb.net SQL массовая вставка / копирование - PullRequest
0 голосов
/ 27 ноября 2018

Надеюсь, что кто-то может помочь,

Справочная информация: Есть старая машина, которая помещает данные в файл доступа MS, и нам нужно импортировать таблицу в таблицу SQL, база данных доступа хранит данные за 3 дняа затем удаляет старые данные, идея состоит в том, чтобы каждое утро запускать задачу для вставки новых записей в sql, игнорировать существующие, чтобы мы могли построить график за год.

Я извлек данные из MS accessв Datatable под названием «таблица» и создал имена столбцов в таблице SQL, которая соответствует, я читал о SQL Bulkcopy, но все примеры, которые я видел, находятся в C #, но любые преобразователи кода выдают ошибку, и я не на 100%они сделают то, что я после.

Может кто-нибудь помочь?Пит

Dim count As Integer = 0
    Dim table As DataTable = New DataTable
    Dim accConnection As New OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0; Data Source='C:\Machine.mdb';User Id=admin; Password=;")
    Dim sqlConnection As New SqlClient.SqlConnection("Data Source=10.75.24.94;Initial Catalog=CTData;User ID=sql;Password=")
    Try
        'Import the Access data
        accConnection.Open()
        Dim accDataAdapter = New OleDb.OleDbDataAdapter("SELECT * FROM Slot_Vision_Counters_table", accConnection)
        accDataAdapter.Fill(table)
        accConnection.Close()
        'Export to MS SQL
        For Each row As DataRow In table.Rows
            row.SetAdded()
            count = count + 1
        Next


Code for inserting the data to SQL?


    Catch ex As Exception
        If accConnection.State = ConnectionState.Open Then
            accConnection.Close()
        End If
        If sqlConnection.State = ConnectionState.Open Then
            sqlConnection.Close()
        End If
        MessageBox.Show("Import failed with error: " & Environment.NewLine & Environment.NewLine _
        & ex.ToString)
    End Try

1 Ответ

0 голосов
/ 27 ноября 2018

В SQL вам нужно создать переменную Table, а затем в VB.net создать переменную DataTable (и определить столбцы) и сначала поместить данные в переменную DataTable.

Затем передать переменную DataTableлибо в SQL-запрос, который выбирает из переменной таблицы, чтобы вставить в вашу таблицу, либо создать хранимую процедуру с параметром, который принимает переменную таблицы.

Я могу поделиться некоторым кодом позже, если вы не можете выяснить,как это сделать.

...