update большого кол-ва данных из excel-таблицы

NekEat
Дата: 06.06.2011 09:49:53
Как лучше реализовать следующую задачу?

1. есть таблица в excel, в ней 2 столбца (name1, name2) и около 5тыс. строк
2. name1 это выборка всех уникальных значений из таблицы sqltable1 стоблца column1 из MSSQL
3. по сути, в excel таблице произведены соответствия name1 и name2
4. необходимо обновить стоблец column1 в MSSQL-таблице, заменив значения из excel'евского стоблца name2
yado4eg
Дата: 06.06.2011 11:21:40
NekEat,

имхо средств скуля вполне хватает для решения подобной задачи.

т.е. вы берете данные из таблицы потом их группируете и хотите апдейтить таблицу.
попробуйте, к примеру, реализовать с помощью временной таблицы или CTE. Собрать и обработать свои данные,
а потом залить обратно в целевую таблицу.
NekEat
Дата: 06.06.2011 11:35:03
ручками перебирать update ... where name1=name2 или что-то в таком роде, 5тыс. строк - это жесть... автоматизировать бы это
yado4eg
Дата: 06.06.2011 11:48:27
NekEat
ручками перебирать update ... where name1=name2 или что-то в таком роде, 5тыс. строк - это жесть... автоматизировать бы это


нет. я как раз говорю о автоматизации процесса.

1. Создаем временную таблицу.
2. Выбираем нужные данные и вставляем во временную таблицу:
   insert into #temp_table (Name1, Name2)
       select  ...
       from DestinationTable
 
3. Что-то делается с данными во временной таблице.
4. Апдейт целевой таблицы
update DestionationTable
set DestionationTable.Name2 = #temp_table.Name2
from DestionationTable
     join #temp_table on DestionationTable.Name1 = #temp_table.Name1
  
NekEat
Дата: 06.06.2011 17:19:31
данные из excel я перенёс в MSSQL

tempdb (name1, name2)

дело вот в чём:
существует таблица [maindb] , которую как раз надо проапдейтить, заменив в ней все значения столбца name0 соответствующим значениям в БД tempdb ,т.е. name1 на name 2
NekEat
Дата: 08.06.2011 11:22:32
помогите со скриптом, плиз...
Glory
Дата: 08.06.2011 11:25:36
NekEat
помогите со скриптом, плиз...

Разве это
update DestionationTable
set DestionationTable.Name2 = #temp_table.Name2
from DestionationTable
     join #temp_table on DestionationTable.Name1 = #temp_table.Name1
уже не помощь ?
guest_guest
Дата: 08.06.2011 11:27:11
NekEat,

Все же выше написано



Update maindb SET
name0 = t.name2
FROM maindb m
INNER JOIN tempdb t ON t.name1 = m.name0 
NekEat
Дата: 08.06.2011 15:03:53
всё оказалось немного сложнее... структура таблиц немного другая:
есть 4 таблицы...

1. firm (id_firm, info_firm) - id фирмы, информация о фирме
2. qb (id_qb, name_qb) - таблица соответствия id-вида деятельности и имени вида деятельности
3. firm_qb (id_firm, id_qb) - соответствия id-фирмы и id-вида деятельности

4. temp_table (name1, name2) - по сути name1 - это info_firm, а name2 - это name_qb

Дело в том, что в temp_table перечислены только уникальные значения name_qb, и к ним соответственно назначены info_firm.
В таблице firm - намного больше позиций, нежели уникальных значений.


Надо чтобы получилась таблица temp_table2 (id_qb, id_firm)соответствия id_qb и id_firm
NekEat
Дата: 09.06.2011 16:38:47
мне очень нужна в этом помощь, тут сразу с 4мя таблицами надо работать, у самого мозг взрывается...