Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Caxa_ASS Member Откуда: Сообщений: 77 |
Добрый день. Подскажите, пожалуйста, как сделать update сразу для 250-ти id, которым необходимо присвоить другие имена/название? Список Id, и список Имен/названий для id, уже создан в MS Excel. Пример: ... 8762203435012524641 a 8762203435012524605 b 8762203435012524649 c 8762203435012524533 d 8762203435012524490 e ... Буду благодарен за помощь. |
2 окт 19, 12:14 [21984722] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Caxa_ASS, загрузите список на сервер в таблицу, затем update ... from ... |
2 окт 19, 12:43 [21984754] Ответить | Цитировать Сообщить модератору |
Caxa_ASS Member Откуда: Сообщений: 77 |
Владислав Колосов, Спасибо за ответ, но больше интересует решение вопроса скриптом. |
2 окт 19, 12:57 [21984773] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Caxa_ASS, Можно читать таблицу через openquery() или openrowset(), если это разовая задача. |
2 окт 19, 13:03 [21984788] Ответить | Цитировать Сообщить модератору |
ЛиП Member Откуда: Сообщений: 348 |
Можно прямо в экселе конкатинацией update написать |
2 окт 19, 13:21 [21984817] Ответить | Цитировать Сообщить модератору |
Caxa_ASS Member Откуда: Сообщений: 77 |
Мне не нужна конкатинация id и имения данного id, мне нужно для 250-ти id присвоить другие значения в кортежах (изменить ФИО). |
||
2 окт 19, 13:27 [21984829] Ответить | Цитировать Сообщить модератору |
Caxa_ASS Member Откуда: Сообщений: 77 |
- для openquery() - это как простой update, обновится только одна запись. UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101') SET name = 'ADifferentName'; - openrowset() тоже не подойдет |
||
2 окт 19, 13:33 [21984842] Ответить | Цитировать Сообщить модератору |
Shakill Member Откуда: мск Сообщений: 1882 |
какой из шагов у вас не получается - загрузить данные из экселя в таблицу sql server или обновить одну таблицу на основе данных в другой? |
||||
2 окт 19, 13:35 [21984844] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Caxa_ASS, так что обновить надо? Судя по синтаксису Вы хотите обновить Excel таблицу? |
2 окт 19, 13:45 [21984867] Ответить | Цитировать Сообщить модератору |
Caxa_ASS Member Откуда: Сообщений: 77 |
Shakill, из MS Excel в MS T-Sql |
2 окт 19, 13:47 [21984872] Ответить | Цитировать Сообщить модератору |
Caxa_ASS Member Откуда: Сообщений: 77 |
нет, есть таблица в MS T-SQL, в таблице для 250 ID необходимо изменить ФИО: Пример: ... 8762203435012524533 А.А. Иванов (заменить на А.А.Петров) 8762203435012524533 А.А. Толстой (заменить на В.В. Волк) и т.д. ... |
||
2 окт 19, 13:51 [21984884] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11568 |
прилинкуйте лист экселя к mssql серверу или через openquery и используйте через JOIN с основной таблице из базы |
2 окт 19, 14:10 [21984914] Ответить | Цитировать Сообщить модератору |
Shakill Member Откуда: мск Сообщений: 1882 |
выбирайте https://docs.microsoft.com/en-us/sql/relational-databases/import-export/import-data-from-excel-to-sql?view=sql-server-2017 |
||
2 окт 19, 14:25 [21984935] Ответить | Цитировать Сообщить модератору |
Minamoto Member Откуда: Москва Сообщений: 1162 |
Caxa_ASS, я обычно поступаю так: 1) Перед первой колонкой и между колонками с данными добавляем еще одну колонку. 2) в первую помещаем ( или (' (в зависимости от того, число или строка у нас в колонке, растягиваем вниз 3) между колонок с данным помещаем , или '', или '',' также в зависимости от типов слева и справа, растягиваем вниз 3) после последней колонки с данными помещаем ), или ''), по аналогичному принципу, растягиваем вниз 4) Ctrl+A, Ctrl+C, вставляем в Management Studio, Ctrl+H (массовая замена), меняем знак табуляции на пустое значение. 5) дописываем в начало SELECT * FROM (VALUES , в конце стираем запятую, дописываем ) AS t (t1, t2) (полям названия задаем, как удобно). 6) У нас готов запрос для получения записей - соединяем с нужной таблицей, пишем апдейт. |
2 окт 19, 14:42 [21984957] Ответить | Цитировать Сообщить модератору |
ЛиП Member Откуда: Сообщений: 348 |
Пусть в столбце A id, в столбце C новое фио. Тогда пишем конкатинацию рядом и протягиваем ="Update table set name = '"&C1&"' where id = "&A1 |
||||
2 окт 19, 15:16 [21985012] Ответить | Цитировать Сообщить модератору |
AndrF Member Откуда: Сообщений: 2194 |
Можно ничего не линковать, а все сделать в модуле самого Excel. Немножко VBA надо знать, конечно... |
2 окт 19, 15:58 [21985089] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2395 |
Minamoto, жесть вместо пунтов 1-5, в эксельке в новой колонке пишешь что-то вроде =СЦЕПИТЬ("insert into #tmp_table select '";B2;"' as d, '";C2;"' as nn, '";E2;"' as zz") двойным кликом протягиваешь эту формулу на всю конку, копируешь, вставляешь в студию, выполняешь дальше уже работаешь с #tmp_table |
2 окт 19, 16:42 [21985145] Ответить | Цитировать Сообщить модератору |
Caxa_ASS Member Откуда: Сообщений: 77 |
Minamoto, мне нравится, спасибо. |
2 окт 19, 16:55 [21985180] Ответить | Цитировать Сообщить модератору |
Caxa_ASS Member Откуда: Сообщений: 77 |
Всем спасибо, сделал все через python, завел все id и имена в массив, сделал необходимый print и зациклил его, получились 250 готовых апдейтов :) |
2 окт 19, 16:57 [21985185] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |