Подскажите по запросу SQL (INSERT INTO) #553602


#0 by smaharbA
есть запрос вида insert into table (a1, a2) values (1,2) , (3,4) , (5,6) как в самом запросе сделать условие типа where a1!=5 ?
#1 by Господин ПЖ
никак... ибо бред...
#2 by Fragster
все во временную таблицу, а потом insert-select
#3 by МихаилМ
добавить ограничение или триггер если есть права. потом удалить.
#4 by smaharbA
на первый только взгляд бред запрос формируется из файла данных, при парсинге конечно возникают ошибки, на стадии парсинга отсеивать слишком затратно пока делается через временную таблицу, но это может приводить к забитию файловой системы темп (теоретически)
#5 by smaharbA
триггер не добавить ибо мускуль 3.х (там вроде нет триггеров еще) а ограничение подробнее ?
#6 by Fragster
если кусками по 1 запросу (т.е. по ~2МБ, ибо больше вряд ли проканает) - то все будет ок
#7 by Живой Ископаемый
ограничение на значения в поле
#8 by ДенисЧ
нет такой возможности в языке. делай так insert into... select from ... where
#9 by МихаилМ
читайте доки "create constrain"
#10 by rs_trade
какие триггеры? вы бредите. инсертить можно результат селекта. читаем BOL там же все есть
#11 by ДенисЧ
Ага. Констрейны. И ловите исключения... Оно нужно, геморрой на голову?
#12 by smaharbA
кусками дополнительные сложности, кусок за период должен отправляться за одно подключение
#13 by Господин ПЖ
все системы поглощающие данные из внешних сред состоят из двух контуров. Грязное хранилище - считанные данные как они есть и чистое - то что валидно с точки зрения логики системы.
#14 by Господин ПЖ
7, 9 - бугага...
#15 by smaharbA
селект чего ? Вы сабж читали ?
#16 by Господин ПЖ
бросай файл в грязное, из него данные в чистое...
#17 by ЗлобнийМальчик
+1
#18 by rs_trade
из временной таблицы. нет?
#19 by smaharbA
из временной таблицы сейчас и тянет, но выше сказано про темп, она мала всего 100 мБ, запрос конечно такой  не будет, но за сеанс таких запросов не один, а пересоздавать временную таблицу тоже накладно
#20 by rs_trade
Что за файл вообще? Какой формат? Bulk insert для таких вещей у скуля есть.
#21 by smaharbA
пока работает так insert into temp (a1, a2) values (1,2) , (3,4) , (5,6), ...; insert into table  (...) select * from temp where ...;
#22 by smaharbA
да есть подобное load data infile 'file' но файл это не файл а поток и на другом конце сети
#23 by Широкий
запрос генерируется что ли?
#24 by Широкий
+23 текст запроса
#25 by smaharbA
да
#26 by Широкий
А вставить проверку низзя что ли?
#27 by CoolCat
insert into temp (a1, a2) values (1,2) , (3,4) , (5,6), ...;  в MSSQL 2000 не канает.... это че за хня???
#28 by smaharbA
#29 by smaharbA
mysql
#30 by rs_trade
синтаксис 2008
#31 by Широкий
Тогда вообще не пойму в чем проблема.. Текст генириться.. Значения что ли сравнить нельзя?
#32 by Vovik
if insert into table (a1, a2) values (1,2) , (3,4) , (5,6) else insert into table (a2) values , , А чем плохо перед запросом текст поправить?
#33 by stix2010
классика nsert into table  (...) select * from .... where читай BOL двоечник
#34 by Vovik
BOL это что? А напиши если не трудно запрос по твоей схеме для , очень интересно.
#35 by smaharbA
накладные расходы велеки, думалось, что в самом инсерте можно как то... Тогда уж с временной как было будет меньше мощностей
#36 by smaharbA
ну, ну
#37 by КонецЦикла
Значения откуда берутся? Чо там если-то и так 125 раз? Ни разу такой необходимости не было, хотя извратов делал достаточно
#38 by el-gamberro
DECLARE @tmp_bulktable table
#39 by el-gamberro
И никаких проблемов с забитием темпа :)
#40 by el-gamberro
Book on line
#41 by smaharbA
см для мускуля, там канает синтаксис из щаз, читай ветку внимательно
#42 by Skom
insert into а потом делаешь delete
#43 by smaharbA
ага, лопатить таблицу с десятками миллионов записей
#44 by Skom
INSERT INTO tbl_temp2 (fld_id)    SELECT tbl_temp1.fld_order_id    FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
#45 by Skom
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 by Skom
может это поможет
#47 by Skom
я вообще то пошутил)) насчет удаления из вставленного
#48 by smaharbA
сейчас так и делается, записывается в темпорари таблицу и из нее уже инсерт селектом с условием
#49 by Salimbek
А нельзя так: 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 by smaharbA
вариант
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С