Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> INSERT, вставка множества занчений 
:(
    Опции темы
Unregistered
Дата 19.1.2004, 05:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как я могу одним запросом вставить в таблицу сразу множество строк, а не кидать их по одной? MSSQL2000 . Спасибо.
  Вверх
Kesh
Дата 19.1.2004, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 1
Всего: 54



Только выборкой из других таблиц
Код на чистом SQL примерно такой...
Код
INSERT INTO TABLE <ИМЯ ТАБЛИЦЫ> (<ЗНАЧЕНИЯ ПОЛЕЙ>) VALUES (SELECT ...)




--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Medved
Дата 20.1.2004, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: нет
Всего: 154



Цитата(kesh @ 19.1.2004, 11:43)
Только выборкой из других таблиц
Код на чистом SQL примерно такой...

Это код как раз-то для вставки одной записи (строки).

НИКАК. (Да и не нужно это если честно).

Если необходимо вставить несколько записей, то используйте цикл.

Даже если применять методы копирования таблиц, то их внутренняя реализация все равно такова, что они вставляют по одной записи.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Kesh
Дата 20.1.2004, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 1
Всего: 54



Цитата(Pegas @ 19.1.2004, 23:15)
Цитата(kesh @ 19.1.2004, )
Только выборкой из других таблиц
Код на чистом SQL примерно такой...

Это код как раз-то для вставки одной записи (строки).

Пардон, код такой...
Код
INSERT INTO <ИМЯ ТАБЛИЦЫ> SELECT <ЗНАЧЕНИЯ ПОЛЕЙ> FROM ...


Это сообщение отредактировал(а) kesh - 20.1.2004, 14:32


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Unregistered
Дата 21.1.2004, 09:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Pegas @ 20.1.2004, 02:15)
[QUOTE=kesh,19.1.2004, 11:43]
.....
НИКАК. (Да и не нужно это если честно).
....

Ну как же ненужно? Смотря какая задача. Мне нужно сохранять показания датчиков в базу sql. Датчиков около 400. Показания снимаются каждую секунду. (400 инсертов в секунду) И sqlсервер установлен "где-то там в сети". Благо, что линия до него 100Мб. Ну один хрен - ТРАФИК. Способ оптимизировать я пока не нашел.
  Вверх
x77
Дата 21.1.2004, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



о, привет, коллега.

я делаю так. (все записи в таблице пронумерованы по инкременту).

1. подключаемся, берём номер последней записи. (lastid)
2. запрашиваем все записи, где id > lastid.
3.фетчим, засовываем в clientdataset, настроенный на локальный файл на диске (в цикле, ничего не поделаешь)
4. запоминаем номер последней записи в last id
5. отключаемся

на форме клиента все гриды и пр. муть настроены на clientdataset. т.е. пользователи ползают по событиям локально. по мере необходимости дополнительные данные подсовываются с сервака (электронные карты доступа, планы этажей и пр.), но там тоже свой механизм кэширования. фактически, запрашивается только дата последней модификации, и если она не совпадает с датой локальной записи, только тогда запись перегружается. опрос cсервера - раз в полсекунды, база - ib.

по сравнению с производительностью прошлой версии, написанной в "традиционном стиле", с постоянным коннектом, db-aware control'ами, работающими напрямую с сервером, - земля и небо.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
x77
Дата 21.1.2004, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



правда, это механизм удалённого мониторинга событий, а не серверная часть smile.gif

а вот что касается вставки на сервер, то это лучше всего решать аппаратно - ставить микроконтроллер, писать на него дрова, и данные с датчиков должны ложится непосредственно на сервак. писать такие объёмы через сеть - нехорошо.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
AntonSaburov
Дата 21.1.2004, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Цитата
Ну как же ненужно? Смотря какая задача. Мне нужно сохранять показания датчиков в базу sql. Датчиков около 400. Показания снимаются каждую секунду. (400 инсертов в секунду) И sqlсервер установлен "где-то там в сети". Благо, что линия до него 100Мб. Ну один хрен - ТРАФИК. Способ оптимизировать я пока не нашел.


Может тогда написать свой серверок, который будет принимать только циферки от программы по TCP, и уже сам будет скидывать в базу ? А стоять он будет прямо на той же машине что и SQL-сервер.
Причем скидывать не по одной записи, а после накопления некого количества. И уже для сотни точек формируется пакет из сотни INSERT и он отдается на откуп SQL. Тут и траффик будет маленький и выполнение будет лучше.
Дальше можно поиграть с количеством точек.

Может быть будет интереснее будет сделать сохраненную процедуру (правда туда много точек зараз сложно будет положить). Зато на ее разбор времени не тратится (если кто не знает - каждый запрос предварительно разбирается и оптимизируется). Для сохраненной процедуры это делается один раз. Может это будет быстрее.
PM MAIL WWW ICQ   Вверх
x77
Дата 21.1.2004, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



может, кстати, помочь кэширование обновлений.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Medved
Дата 22.1.2004, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: нет
Всего: 154



На будущее:

Цитата
Ну как же ненужно? Смотря какая задача. Мне нужно сохранять показания датчиков в базу sql. Датчиков около 400. Показания снимаются каждую секунду. (400 инсертов в секунду) И sqlсервер установлен "где-то там в сети". Благо, что линия до него 100Мб. Ну один хрен - ТРАФИК. Способ оптимизировать я пока не нашел.


Вот с этого и надо было начинатать вопрос....


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.1655 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.