Надеюсь, кто-то может помочь,
Предыстория: у вас есть старая машина, которая помещает данные в файл доступа MS, и нам нужно импортировать таблицу в таблицу SQL, база данных доступа сохраняет данные в течение 3 дней, а затем удаляет старые данные, идея состоит в том, чтобы запустить задачу каждое утро вставлять новые записи в sql, игнорировать существующие, чтобы мы могли построить график за год.
Я извлек данные из доступа MS в Datatable под названием «table» и создал имена столбцов в таблице 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
вам может быть лучше с работой SSIS или чем-то в этом роде
«все образцы, которые я видел, написаны на C#» - Значит, вы не смотрели документацию на Класс SqlBulkCopy? Если в правом верхнем углу этой страницы вы видите </>C#, щелкните по нему и выберите VB.
Я зависал над этой страницей, я не понимал, что вы можете изменить ее на VB, моя ошибка - я не был уверен, игнорирует ли она записи, которые будут такими же?


В SQL вам нужно создать переменную таблицы, а затем в VB.net создать переменную DataTable (и определить столбцы) и сначала поместить данные в переменную DataTable.
Затем передайте переменную DataTable либо в SQL-запрос, который ВЫБИРАЕТ из переменной Table в INSERT в вашу таблицу, либо создайте хранимую процедуру с параметром, который принимает переменную Table.
Я могу поделиться кодом позже, если вы не поймете, как это сделать.
Возможный дубликат Массовая вставка на сервер Sql