Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL 2005 Import Data из *.xls  [new]
nnmserg11
Member

Откуда: Р.Ф.
Сообщений: 86
Ребят, всем доброго дня.

Целый день мучаюсь с вопросом .. (профи - подскажите, ссылку, видео - буду благодарен)
Есть таблица, в ней два поля: ID и name, причем name пустое у всех записей.
Есть файл *.xls в нем та же таблица, но name уже заполнен.

Как средствами SQL Import Data это дело update'ить? Я понимаю про шаговый визор .. но когда дело доходит до полей - торможу(( Либо на одном из этапов визора выбрать вручную написать update // Но меня заклинило - какой тогда сам update будет? //

Буду очень признателен (не в любви конечно)) )
5 авг 13, 13:12    [14663518]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35399
Блог
update t1
set ...
from таблица as t1
inner join OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties="Excel 8.0;IMEX=1"')...[Лист1$] on ...
5 авг 13, 13:43    [14663757]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
nnmserg11,

1) загружаете файл xls в базу, во временную табличку (или вручную через мастер импорта, или bulk insert)
2) update свою табличку, используя временную
3) удаляете временную
5 авг 13, 13:45    [14663768]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
StarikNavy,

или через OpenDataSource
5 авг 13, 13:45    [14663776]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
nnmserg11
Member

Откуда: Р.Ф.
Сообщений: 86
Ребят, спасибо)) Все получилось.

Появился в другом месте дополнительный вопрос:
1 таблица: поля NAME и CODE;
2 таблица: поля ID (тип uniqueidentifier), NAME, CODE.

Если я хочу из 1 таблицы (где нет поля ID) во 2 информацию закачать, получается должен заполнять поле ID.
Как использовать NEWID? .. Пробывал через Import Data в SQL - ошибки, через Access - никак.

Подскажите, кто знает.
9 авг 13, 09:24    [14684920]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
Glory
Member

Откуда:
Сообщений: 104751
insert tab2 (ID, NAME, CODE)
select newid(), NAME, CODE from tab1
9 авг 13, 10:37    [14685369]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
nnmserg11
Member

Откуда: Р.Ф.
Сообщений: 86
Glory,

Спасибо. Хотя я когда вопрос написал - уже все "сложилось"))
Сложности ещё дальше ..
9 авг 13, 11:13    [14685705]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
nnmserg11
Member

Откуда: Р.Ф.
Сообщений: 86
Ребят, по мере решения одной проблемы возникает другая. Опять нужен совет:

1 таблица: поле ID (тип uniqueidentifier);
2 таблица: поля ID (тип uniqueidentifier), NAME, CODE.

Я хочу создавать новую запись во 2 таблице, причем:
через newid() поле ID заполняется сразу (!) в 1 таблице и во 2-й (одинаковым значением), ну и записываются NAME, CODE.

ПРОБЫВАЛ (хотя бы писать в обе ID, т.к. NAME и CODE пока сделал не обязательными):

DECLARE @a uniqueidentifier
SET @a=newid()
INSERT INTO Таблица1 (ID)
VALUES (@a)

UPDATE Таблица2
SET ID=@a

ИТОГ:
1 Таблица естественно заполняется, во 2 ничего не пишется .. //
9 авг 13, 11:25    [14685795]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
Glory
Member

Откуда:
Сообщений: 104751
nnmserg11
ИТОГ:
1 Таблица естественно заполняется, во 2 ничего не пишется .. //

Команда UPDATE не может "создавать новую запись во 2 таблице"
Потому что это команда изменяет существующие записи. А не добавляет новые
9 авг 13, 11:27    [14685811]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
nnmserg11
Member

Откуда: Р.Ф.
Сообщений: 86
Glory,

Спасибо. Хм ..

DECLARE @a uniqueidentifier
SET @a=newid()
INSERT INTO Таблица1 (ID)
VALUES (@a)
INSERT INTO Таблица2 (ID)
VALUES (@a)

Заполнилось одинаковыми значениями, как и должно.
9 авг 13, 11:34    [14685871]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
nnmserg11
Member

Откуда: Р.Ф.
Сообщений: 86
Хм .. надеюсь последнее усложнение задачи .. // ))

Как мне создать n-ое количество записей, не вручную .. ? .. причем:

1 таблица: поле ID (тип uniqueidentifier);
2 таблица: поля ID (тип uniqueidentifier), NAME, CODE;
3 таблица: поля NAME, CODE

поле ID заполняется сразу в Таблицы 1 и 2, генерируется с newid()

SELECT TOP (n-ое количество записей для создания) поля NAME, CODE
FROM Таблица 3

.. и добавляться эти данные должны в Таблицу 2.

НЕ ПОНЯТНЫМ для меня остается как выборку по Таблице 3 связать с созданием новой записи ..

Буду очень признателен.
9 авг 13, 13:12    [14686552]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
Glory
Member

Откуда:
Сообщений: 104751
nnmserg11
НЕ ПОНЯТНЫМ для меня остается как выборку по Таблице 3 связать с созданием новой записи ..

Непонятно, какую задачу вы решаете
9 авг 13, 13:19    [14686598]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
nnmserg11
Member

Откуда: Р.Ф.
Сообщений: 86
Glory,

Я меня параллельно несколько задач. Сегодня понадобилось все перекроить, поэтому условия накладываются по мере решения ..
Последняя моя задача следующая:

1 таблица: поле ID и несколько полей, которые заполняются у всех записей const значениями;
2 таблица: поля ID, NAME, CODE;
3 таблица: поля NAME, CODE.

Создаю новую запись в таблицы 1 и 2 (одновременно):
- ID генерируется автоматически и должен совпадать в обоих таблицах;
- в таблицу 1 прописываю поля с const значениями;
- в таблицу 2 подтягиваю поля NAME, CODE из таблицы 3.

9 авг 13, 13:52    [14686887]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
nnmserg11
Member

Откуда: Р.Ф.
Сообщений: 86
http://s019.radikal.ru/i637/1308/4b/6dcbbe39f13b.jpg
9 авг 13, 13:53    [14686889]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
Glory
Member

Откуда:
Сообщений: 104751
nnmserg11
http://s019.radikal.ru/i637/1308/4b/6dcbbe39f13b.jpg

https://www.sql.ru/forum/127456/rekomendacii-po-oformleniu-soobshheniy-v-forume п.4 и п.6
9 авг 13, 13:54    [14686900]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
nnmserg11
Member

Откуда: Р.Ф.
Сообщений: 86
Glory,

Ок, понял))

Declare @a uniqueidentifier
SET @a=newid()
INSERT INTO [БД1].[dbo].[Таблица1]
(Id,statecode,statuscode)
VALUES (@a,0,1)

INSERT INTO [БД1].[dbo].[Таблица2]
(Id,name,code)
VALUES (@a,'Test',1)

В поля name и code Таблицы2 в данном запросе вставлены const ('Test',1), но на самом деле их надо вытягивать из Таблицы3.

В Таблице3 много записей.
Нужно для каждой записи Таблицы3 создавать запись в Таблицы 1 и 2.
9 авг 13, 14:40    [14687282]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
Glory
Member

Откуда:
Сообщений: 104751
nnmserg11
Нужно для каждой записи Таблицы3 создавать запись в Таблицы 1 и 2.

Ответ уже был 14685369
9 авг 13, 14:45    [14687331]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
nnmserg11
Member

Откуда: Р.Ф.
Сообщений: 86
Glory,

Да, это я знаю .. но:

Declare @a uniqueidentifier
SET @a=newid()
INSERT INTO [БД1].[dbo].[Таблица1]
(Id,statecode,statuscode)
VALUES (@a,0,1)

INSERT [БД1].[dbo].[Таблица2]
(Id,name,code)
SELECT @a,name,code
FROM [БД1].[dbo].[Таблица3]

ОШИБКА:
Msg 2627, Level 14, State 1, Line 1 (--ругается на-- Declare @a uniqueidentifier)
Violation of PRIMARY KEY constraint 'PK_Таблица2'. Cannot insert duplicate key in object 'dbo.New_russian_lightExtensionBase'.

Создает 1 запись в таблицу1. В таблицу2 даже 1-ю не создал.
Не хочет при создании новых записей создавать новый ID .. newid()

Как быть, есть варианты?
9 авг 13, 15:12    [14687509]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 Import Data из *.xls  [new]
Glory
Member

Откуда:
Сообщений: 104751
nnmserg11
Как быть, есть варианты?

Не писать отсебятину, а использовать предложенный вариант в том виде, каком он дан
9 авг 13, 15:16    [14687538]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить