Обновите базу данных SQL через .NET c # только с изменениями - PullRequest
0 голосов
/ 13 февраля 2019

Ситуация : третьи лица ежедневно помещают XML-файл в определенное место, где мое приложение Windows забирает его, удаляет данные из таблицы в моей БД и заменяет их новыми данными.По сути, XML представляет собой все данные, а не только изменения.

Вопрос : вместо того, чтобы каждый день отбрасывать таблицу, я бы хотел обновить свою БД только обновленными или новыми данными,не проходя каждый ряд и сравнивая их.Есть ли способ сделать это в C #?

Спасибо.

1 Ответ

0 голосов
/ 13 февраля 2019

Вам не нужно бросать стол.Вы также можете обрезать его или удалить все строки из него.

Удаление и усечение - это быстрые операции, но они фактически изменяют модель данных (оператор DDL) и довольно тупы.Они в основном отбрасывают любые данные, которые база данных имеет для таблицы.

Удаление - это операция DML (изменение данных без касания структуры базы данных).Он имеет потенциальную выгоду от транзакции, поэтому вы можете выполнить откат к предыдущим данным, если по какой-либо причине импорт не удастся.Но это может занять больше времени, потому что база данных будет вести учет внесенных изменений.

Заявления достаточно просты:

truncate TableName;

или

delete * from TableName;

Если выЕсли вы действительно хотите сравнить изменения, вам нужно сначала запросить данные или написать более сложное утверждение upsert , для которого точное решение может отличаться в зависимости от используемой вами базы данных.Я сомневаюсь, что это будет быстрее или эффективнее, и я бы пошел на усечение или удаление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...