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мя таблицами надо работать, у самого мозг взрывается...