![]() |
![]() |
![]() |
|
Подскажите по запросу SQL (INSERT INTO) | ☑ | ||
---|---|---|---|---|
0
smaharbA
07.06.11
✎
11:18
|
есть запрос вида
insert into table (a1, a2) values (1,2) , (3,4) , (5,6) как в самом запросе сделать условие типа where a1!=5 ? |
|||
1
Господин ПЖ
07.06.11
✎
11:22
|
никак... ибо бред...
|
|||
2
Fragster
гуру
07.06.11
✎
11:24
|
(0) все во временную таблицу, а потом insert-select
|
|||
3
МихаилМ
07.06.11
✎
11:24
|
добавить ограничение
или триггер если есть права. потом удалить. |
|||
4
smaharbA
07.06.11
✎
11:25
|
на первый только взгляд бред
запрос формируется из файла данных, при парсинге конечно возникают ошибки, на стадии парсинга отсеивать слишком затратно пока делается через временную таблицу, но это может приводить к забитию файловой системы темп (теоретически) |
|||
5
smaharbA
07.06.11
✎
11:25
|
(3) триггер не добавить ибо мускуль 3.х (там вроде нет триггеров еще)
а ограничение подробнее ? |
|||
6
Fragster
гуру
07.06.11
✎
11:26
|
(4) если кусками по 1 запросу (т.е. по ~2МБ, ибо больше вряд ли проканает) - то все будет ок
|
|||
7
Живой Ископаемый
07.06.11
✎
11:26
|
ограничение на значения в поле
|
|||
8
ДенисЧ
07.06.11
✎
11:27
|
нет такой возможности в языке.
делай так insert into... select from ... where |
|||
9
МихаилМ
07.06.11
✎
11:27
|
читайте доки
"create constrain" |
|||
10
rs_trade
07.06.11
✎
11:28
|
какие триггеры? вы бредите. инсертить можно результат селекта. читаем BOL там же все есть
|
|||
11
ДенисЧ
07.06.11
✎
11:28
|
Ага. Констрейны. И ловите исключения...
Оно нужно, геморрой на голову? |
|||
12
smaharbA
07.06.11
✎
11:30
|
(6) кусками дополнительные сложности, кусок за период должен отправляться за одно подключение
|
|||
13
Господин ПЖ
07.06.11
✎
11:30
|
(4) все системы поглощающие данные из внешних сред состоят из двух контуров. Грязное хранилище - считанные данные как они есть и чистое - то что валидно с точки зрения логики системы.
|
|||
14
Господин ПЖ
07.06.11
✎
11:31
|
7, 9 - бугага...
|
|||
15
smaharbA
07.06.11
✎
11:31
|
(10) селект чего ? Вы сабж читали ?
|
|||
16
Господин ПЖ
07.06.11
✎
11:32
|
(15) бросай файл в грязное, из него данные в чистое...
|
|||
17
ЗлобнийМальчик
07.06.11
✎
11:32
|
(13) +1
|
|||
18
rs_trade
07.06.11
✎
11:32
|
(15) из временной таблицы. нет?
|
|||
19
smaharbA
07.06.11
✎
11:35
|
(18) из временной таблицы сейчас и тянет, но выше сказано про темп, она мала всего 100 мБ, запрос конечно такой не будет, но за сеанс таких запросов не один, а пересоздавать временную таблицу тоже накладно
|
|||
20
rs_trade
07.06.11
✎
11:35
|
Что за файл вообще? Какой формат? Bulk insert для таких вещей у скуля есть.
|
|||
21
smaharbA
07.06.11
✎
11:37
|
пока работает так
insert into temp (a1, a2) values (1,2) , (3,4) , (5,6), ...; insert into table (...) select * from temp where ...; |
|||
22
smaharbA
07.06.11
✎
11:38
|
(20) да есть подобное load data infile 'file'
но файл это не файл а поток и на другом конце сети |
|||
23
Широкий
07.06.11
✎
11:40
|
запрос генерируется что ли?
|
|||
24
Широкий
07.06.11
✎
11:40
|
+23 текст запроса
|
|||
25
smaharbA
07.06.11
✎
11:41
|
(23) да
|
|||
26
Широкий
07.06.11
✎
11:42
|
А вставить проверку низзя что ли?
|
|||
27
CoolCat
07.06.11
✎
11:43
|
(21)insert into temp (a1, a2) values (1,2) , (3,4) , (5,6), ...; в MSSQL 2000 не канает.... это че за хня???
|
|||
28
smaharbA
07.06.11
✎
11:44
|
Вот так
|
|||
29
smaharbA
07.06.11
✎
11:44
|
(27) mysql
|
|||
30
rs_trade
07.06.11
✎
11:47
|
(27) синтаксис 2008
|
|||
31
Широкий
07.06.11
✎
11:48
|
(28) Тогда вообще не пойму в чем проблема..
Текст генириться.. Значения что ли сравнить нельзя? |
|||
32
Vovik
07.06.11
✎
12:02
|
if
insert into table (a1, a2) values (1,2) , (3,4) , (5,6) else insert into table (a2) values (2) , (4) , (6) А чем плохо перед запросом текст поправить? |
|||
33
stix2010
07.06.11
✎
12:31
|
классика nsert into table (...) select * from .... where
читай BOL двоечник |
|||
34
Vovik
07.06.11
✎
12:37
|
(33)BOL это что? А напиши если не трудно запрос по твоей схеме для (0), очень интересно.
|
|||
35
smaharbA
07.06.11
✎
12:42
|
(31)(32) накладные расходы велеки, думалось, что в самом инсерте можно как то... Тогда уж с временной как было будет меньше мощностей
|
|||
36
smaharbA
07.06.11
✎
12:42
|
(33) ну, ну
|
|||
37
КонецЦикла
07.06.11
✎
13:20
|
(35) Значения откуда берутся?
Чо там если-то и так 125 раз? Ни разу такой необходимости не было, хотя извратов делал достаточно |
|||
38
el-gamberro
07.06.11
✎
13:24
|
DECLARE @tmp_bulktable table
|
|||
39
el-gamberro
07.06.11
✎
13:25
|
И никаких проблемов с забитием темпа :)
|
|||
40
el-gamberro
07.06.11
✎
13:25
|
(34) Book on line
|
|||
41
smaharbA
07.06.11
✎
13:51
|
(37) см (28) для мускуля, там канает синтаксис из (0)
(38) щаз, читай ветку внимательно |
|||
42
Skom
07.06.11
✎
14:03
|
(41)
insert into а потом делаешь delete |
|||
43
smaharbA
07.06.11
✎
14:06
|
(42) ага, лопатить таблицу с десятками миллионов записей
|
|||
44
Skom
07.06.11
✎
14:09
|
INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100; |
|||
45
Skom
07.06.11
✎
14:09
|
12.7.3.3. SELECT ... INTO Statement
SELECT col_name [, col_name] ... INTO var_name [, var_name] ... table_expr SELECT ... INTO syntax enables selected columns to be stored directly into variables. The query should return a single row. If the query returns no rows, a warning with error code 1329 occurs (No data), and the variable values remain unchanged. If the query returns multiple rows, error 1172 occurs (Result consisted of more than one row). If it is possible that the statement may retrieve multiple rows, you can use LIMIT 1 to limit the result set to a single row. SELECT id,data INTO x,y FROM test.t1 LIMIT 1; User variable names are not case sensitive. See Section 8.4, “User-Defined Variables”. In the context of SELECT ... INTO statements that occur as part of events executed by the Event Scheduler, diagnostics messages (not only errors, but also warnings) are written to the error log, and, on Windows, to the application event log. For additional information, see Section 17.4.5, “Event Scheduler Status”. |
|||
46
Skom
07.06.11
✎
14:10
|
||||
47
Skom
07.06.11
✎
14:10
|
(43) я вообще то пошутил)) насчет удаления из вставленного
|
|||
48
smaharbA
07.06.11
✎
14:14
|
(44)(45) сейчас так и делается, записывается в темпорари таблицу и из нее уже инсерт селектом с условием
|
|||
49
Salimbek
07.06.11
✎
14:16
|
(0) А нельзя так:
insert into table (a1, a2) //values (1,2) , (3,4) , (5,6) select * from (select 1 as k1,2 as k2 UNION ALL select 3,4 UNION ALL select 5,6) s where k1<>5 |
|||
50
smaharbA
07.06.11
✎
14:20
|
(49) вариант
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |