Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Серый_Ветер Member Откуда: Сообщений: 5 |
имеется бекап таблицы table.cvs в формате:
по приказу начальства удалил все данные из столбцов name_1;name_2;name_3. удалял так: update table set name_1=N'', name_2=N'', name_3=0 where name_0<>''; и вот поступил приказ вернуть все обратно... мастер импорта ругается на разное количество столбцов, хотя выбирал только name_1;name_2;name_3 ( я, кстати, не уверен, привяжет ли он к существующим данным эти столбцы) в базе, в таблице остались все данные, кроме name_1;name_2;name_3. Как из cvs файла все восстановить обратно? p.s. name_0 нельзя не редактировать, не удалить, только добавить новый(хотя идентификатор не прописан на этом значении) |
||
3 дек 14, 19:30 [16945939] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
|
||
3 дек 14, 19:57 [16946079] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4805 |
alexeyvg, Попробуйте SELECT * FROM OPENROWSET('MSDASQL','Driver={Microsoft Text Driver (*.txt; *.csv)}; DefaultDir=\\networkdrive\networkfolder;Extended properties=''ColNameHeader=True;Format=CSVDelimited;''','select * from CSV File.xlsx.csv') А потом сделайте MERGE. Если ключа нет, попробуйте сделать его например с помощью HASH_BYTES от сохранившегося набора полей. А вы бекапы баз не делаете? |
3 дек 14, 20:26 [16946208] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Перед тем, как что-то удалить, перепишите данные в отдельную таблицу, как минимум. У начальства мозги куриные - сегодня удалить, завтра спрашивают - "а где это и это"? А при массовых операциях "со слов руководства" создавайте сперва резервную копию базы. |
4 дек 14, 13:54 [16949442] Ответить | Цитировать Сообщить модератору |
Jaffar Member Откуда: Сообщений: 633 |
Для начала залейте все из csv в новую табличку в базе данных. Потом попытайтесь однозначно связать строки из старой и новой таблицы, опять же с пом. написания запроса, а не каких-то мастеров. типа select * from OLD_TABLE o left join NEW_TABLE n on ...... --или через cross apply select from OLD_TABLE o outer apply( select top 1 from NEW_TABLE n where ................. ) n. если получиться - сделайте update для строк для которых однозначно определена связь. остальные строчки - думать мудрить, на край отдать пользователям пусть руками делают. |
4 дек 14, 14:05 [16949531] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |