при условии, что структура csv более-менее идентична таблице - да. К сожалению, обычно в csv любят пихнуть данные, которые по хорошему должны лежать в 2-3 таблицах, в пустые ячейки могут вписать пробел (чисто случайно, визуально не видно, а значение в бд будет зависеть от настроек импорта csv и т.д.
но как варик, можно попытаться импортить в временную таблицу и дальше уже ее процесить сторед процедурой, валидируя данные и распихивая их по нужным таблицам, вместо того же кода на с#
1. посмотри что такое sql транзакции и как ими пользоваться.
пример, когда это полезно:
у тебя есть задача:
- обновить данные в таблице А
- обновить данные в таблице В
- обновить данные в таблице С
и если обновление данных в таблицу С фейланулось - нужно откатить взад изменения для таблиц А и В.
так вот, транзакция автоматически роллбекнет все изменения. но при этом важно ее прально настроить.
2. шоб каждый раз не писать и копипиздить ебучие квери - есть такая весч как sql views.
хз завезли такую фичу в mssql 2005, я не на столько древний, но если там такое есть - воопще збс, неистово рекомендую.
3. щепотку автоматизации
если тебе приходят данные в excel (как это обычно бывает), тогда можно чутка упростить задачу
@ разбираемся шо такое csv формат
@ переганяем excel файл в csv средствами екселя (или гуглдока, если прям вообще писец)
это возможно практически в 95% случаев, если нет хитровыебаных спец символов или формул.
могут понадобиться небольшие правки.
@ немного гавнокода на C# (не боись, от С далеко не убежало в плане синтаксиса), а именно:
- чтение данных из csv файла либой CsvHelper
- вставка данных в нужные таблы через Dapper / EF / EF Core
для таких манипуляций копипиздинга со stackoverflow хватит за глаза.
@ PROFIT
для C# сгодится обычная VS 2019 community edition с минимальным установочным пакетом.
или если более привычно, как в старом-добром С, тогда vscode + dotnet версии 5.0.
имхо VS19 проще и удобнее, даже если нужно в зубах поколупаться.
p.s. если надумаешь автоматизировать указаным выше путем и тебе ВДРУГ будет впадлу разбираться с CsvHelper (а я видел и таких леньтяев) - НИ В КОЕМ, СУКА, СЛУЧАЕ даже не взумай написать кастомный парсер для csv. проще потратить день (да даже неделю) на раскуривание как работать с 100500ккк раз перепроверенной либой, чем написать свой гавнокод, который в лучшем случае упадет на внезапном сепараторе, а в худшем случае криво спарсеные данные улетят в БД.
> MS SQL 2005
сам бог велел SSMS. какая версия - я хз, самое олдовое с чем я работал - сервак на mssql 2012, в связке с ssms 2019 работала успешно.
сама ssms полностью бесплатна и разработана мелкомягкими для работы с собственной же ms sql.
и да, можно бонусом поверх SSMS накрутить SQL Search от RedGate.
без следов не получится никак, поскольку сама субд может вести (и ведет) логи, как минимум логи подключений.
но как варик, можно попытаться импортить в временную таблицу и дальше уже ее процесить сторед процедурой, валидируя данные и распихивая их по нужным таблицам, вместо того же кода на с#
спасибо за подсказку
1. посмотри что такое sql транзакции и как ими пользоваться.
пример, когда это полезно:
у тебя есть задача:
- обновить данные в таблице А
- обновить данные в таблице В
- обновить данные в таблице С
и если обновление данных в таблицу С фейланулось - нужно откатить взад изменения для таблиц А и В.
так вот, транзакция автоматически роллбекнет все изменения. но при этом важно ее прально настроить.
2. шоб каждый раз не писать и копипиздить ебучие квери - есть такая весч как sql views.
хз завезли такую фичу в mssql 2005, я не на столько древний, но если там такое есть - воопще збс, неистово рекомендую.
3. щепотку автоматизации
если тебе приходят данные в excel (как это обычно бывает), тогда можно чутка упростить задачу
@ разбираемся шо такое csv формат
@ переганяем excel файл в csv средствами екселя (или гуглдока, если прям вообще писец)
это возможно практически в 95% случаев, если нет хитровыебаных спец символов или формул.
могут понадобиться небольшие правки.
@ немного гавнокода на C# (не боись, от С далеко не убежало в плане синтаксиса), а именно:
- чтение данных из csv файла либой CsvHelper
- вставка данных в нужные таблы через Dapper / EF / EF Core
для таких манипуляций копипиздинга со stackoverflow хватит за глаза.
@ PROFIT
для C# сгодится обычная VS 2019 community edition с минимальным установочным пакетом.
или если более привычно, как в старом-добром С, тогда vscode + dotnet версии 5.0.
имхо VS19 проще и удобнее, даже если нужно в зубах поколупаться.
p.s. если надумаешь автоматизировать указаным выше путем и тебе ВДРУГ будет впадлу разбираться с CsvHelper (а я видел и таких леньтяев) - НИ В КОЕМ, СУКА, СЛУЧАЕ даже не взумай написать кастомный парсер для csv. проще потратить день (да даже неделю) на раскуривание как работать с 100500ккк раз перепроверенной либой, чем написать свой гавнокод, который в лучшем случае упадет на внезапном сепараторе, а в худшем случае криво спарсеные данные улетят в БД.
сам бог велел SSMS. какая версия - я хз, самое олдовое с чем я работал - сервак на mssql 2012, в связке с ssms 2019 работала успешно.
сама ssms полностью бесплатна и разработана мелкомягкими для работы с собственной же ms sql.
и да, можно бонусом поверх SSMS накрутить SQL Search от RedGate.
без следов не получится никак, поскольку сама субд может вести (и ведет) логи, как минимум логи подключений.
и да, сделай бекап.
а rubble в данном контексте это скорее "утильсьірье" aka scrap
а то я тут одному другу думаю подарить, он люто угорает по TES