jest możliwe znacznie zwiększyć ten rodzaj operacji. Aby ta operacja była użyteczna (mam na myśli szybki i całkiem bezpieczny), możesz użyć CE DataAdapter.
Przez próbkę, nie troska o klucze, kroki wymienione poniżej mogą pomóc u:
- upewnić się, że sorce i docelowe tabele mają taką samą strukturę boiska;
- Klonowanie wirtualnego zbioru danych z datatownikiem ze źródłowej bazy danych (Twój wybór);
- Utwórz polecenie CE z nazwą tabeli jako tekst polecenia (TableDirect jako typ polecenia);
- Utwórz zestaw danych CE z polecenia CE;
- Utwórz program budujący polecenia CE z modułu danych CE;
- Przekaż polecenie wstawiania z edytora poleceń CE do rejestru danych CE;
Kopiuj „n” wierszy wsadowych ze źródła DataTable do docelowego elementu datatable (the clone) robi coś takiego:
'... previous codes
For Each currentRow In sourceTable.Rows
'u can do RaiseEvent Processing(currentRow, totalRows) here with DoEvents
If targetTable.Rows.Count < 100 Then
targetTable.InportRow(currentRow)
targetTable.Rows(targetTable.Rows.Count - 1).SetAdded
Else
'...Here you wll call the CE DataAdapter's Update method (da.Update(targetTable))
'...and then be sure you clone the targetTable again, erasing all previous rows.
'...Do a clone again, don't do just a "clear" in the Rows collection.
'...If u have an Autoincrement it will break all Foreign Keys.
End If
Next
'... next codes
W ten sposób u może zaktualizować kilka wierszy bez dużo czasu .
Mam niektóre aplikacje korzystające z tej metody, a średnia stawka wynosi około 1500 wierszy na sekundę w tabeli z 5 NTEXT pola (powolny) i 800000 wierszy.
Oczywiście wszystko zależy od struktury stołu. IMAGE i NTEXT są powolnymi typami danych.
P.S .: Tak jak powiedziałem, ta metoda nie przywiązuje wagi do kluczy, więc należy zachować ostrożność.
Interesujące, dzięki :) – leppie
Ta metoda nie obsługuje typów kolumn Identity i Rowversion –
Wow, zmagał się z Insert i uzyskiwanie 20 - 30 wierszy na sekundę, jestem pewien, że to właśnie zrobił wszystkie 35.774 wiersze w mniej niż 1 po drugie (wszystkie moje dane znajdowały się w tablicy w pamięci), więc nie ma wąskich gardeł od źródła. – Matt