2009-10-19 5 views
0

Каков лучший способ синхронизации таблицы (клиентов), внутри SQL Server и клиентов внутри CSV-файла в Microsoft Excel?Синхронизация между SQL Server и CSV-файлом

Хорошо, вот объяснение: Я разрабатываю программное обеспечение на C# .NET 2008 и создаю таблицу с именем Customers в SQL Server 2005. Содержимое этой таблицы происходит из файла CSV, и пользователь может добавить больше информации, потому что в таблице SQL больше полей, чем файл CSV.

В первый раз легко .. Я просто ADDNEW для каждой строки в CSV-файле. Но во второй раз я не могу удалить всю таблицу, чтобы импортировать ее с самого начала из-за этих дополнительных полей, поэтому мне нужен метод, который может автоматически проверять каждую запись внутри моей таблицы SQL и CSV-файла? Или мне нужно обрабатывать записи один за другим?

+0

У вас есть ключевое поле в данных CSV? Это ваша первоначальная проблема, находя способ сопоставления записей в CSV с данными в таблице. Вторая проблема заключается в обеспечении того, чтобы ключ в CSV не изменялся или - менее забавный - работа над тем, как управлять случаями, когда это возможно. В дополнение к последнему - существует более общее «что делать, если запись удалена из CSV», а не столько проблема в вашем программном обеспечении, сколько вы можете контролировать способ удаления. – Murph

+0

У меня есть ключевое поле в данных CSV. вот что я думал сделать: 1) C# будет читать каждую строку CSV и передать все столбцы в хранимую процедуру 2) процедура запросит существующий реестр (используя ключевое поле), а также: - это существует? . yes: update (не имеет значения, было ли это изменено или нет), и установите для TRUE поле с именем UPDATED_BY_USER . не: addnew 3) в конце записей в CSV хранимая процедура удалит все записи от клиентов, где CHECKED = FALSE (это означает, что эта запись была удалена из файла CSV), и после этого будет установлено значение FALSE all записи в таблице клиентов Правильно ли это? – Eduardo

ответ

0

Взгляните на службы интеграции SQL Server, он может делать все, что вы хотите, и многое другое.

В качестве альтернативы, если вы хотите его закодировать, я предлагаю сделать хэш всех полей в CSV и использовать их для сравнения каждой строки. Различные хеш = изменение = обновленная строка.

+0

Понятие использования хэша является опрятным (одна из тех идей, которые я «знаю», но я не могу зарегистрироваться в своей голове как решение) – Murph

0

Вы можете разделить таблицу CSV и дополнительную информацию в одну таблицу и один вид. Вы бы одну таблицы, которая просто тупое зеркало CSV сам файл, и легко обновить:

TRUNCATE TABLE csvmirror; 
    BULK INSERT csvmirror 
    FROM 'P:\ath\to\csvfile.csv' WITH 
    (FIELDTERMINATOR = ',' 
    , ROWTERMINATOR = '\n'); 

Затем создается представление о том «csvmirror» таблице, который дополняет данные прямые CSV-файл с ваши дополнительные данные из базы данных.

Смежные вопросы