SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.12.2010 21:49:06

Twix
Завсегдатай
Зарегистрирован: 21.02.2008
Сообщений: 88

Хранимые процедуры

Написал код хранимой процедуры, но что то при компиляции появляется ошибка ???

--
-- Definition of procedure `load_data`
--

DELIMITER $$

CREATE PROCEDURE load_data ()
BEGIN
 
LOAD DATA LOCAL INFILE "C:\\214.txt"

    INTO TABLE `quality`.`temp_214`
    CHARACTER SET cp1251
    FIELDS
      TERMINATED BY ';'
      ENCLOSED BY '"'

    LINES
      TERMINATED BY '\r\n'
   
     ( `Кокиль`, `Дефект`,`Локация` , `Автор`, `Стержень`)
     set `id`= null;
 
LOAD DATA LOCAL INFILE "C:\\126.txt"

    INTO TABLE `quality`.`temp_126`
    CHARACTER SET cp1251
    FIELDS
      TERMINATED BY ';'
      ENCLOSED BY '"'

    LINES
      TERMINATED BY '\r\n'
   
     ( `Кокиль`, `Дефект`,`Локация` , `Автор`, `Стержень`)
     set `id`= null;
   
LOAD DATA LOCAL INFILE "C:\\183.txt"

    INTO TABLE `quality`.`tb_183`
    CHARACTER SET cp1251
    FIELDS
      TERMINATED BY ';'
      ENCLOSED BY '"'

    LINES
      TERMINATED BY '\r\n'
   
     ( `Кокиль`, `Дефект`,`Локация` , `Автор`, `Стержень`)
     set `id`= null;
   
TRUNCATE `temp_214`;
TRUNCATE `temp_126`;      
   
end $$

DELIMITER ;
 

ERROR 1314 (0A000): LOAD DATA is not allowed in stored procedures /*  ??????????????????????????????????????????????????????????????*/

Неактивен

 

#2 16.12.2010 22:18:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Хранимые процедуры

Ошибка сообщает, что load data не допустим в хранимых процедурах.
http://dev.mysql.com/doc/refman/5.1/en/ … tions.html

Неактивен

 

#3 17.12.2010 18:47:53

Twix
Завсегдатай
Зарегистрирован: 21.02.2008
Сообщений: 88

Re: Хранимые процедуры

Очень жаль!!! Прийдётся каждый раз запрос в консоль вводить или можно это как то упростить ???

С уважением , Владимир.

Неактивен

 

#4 17.12.2010 19:06:55

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Хранимые процедуры

Написать вместо хранимой процедуры скрипт (php, perl, и т.д), который будете в нужный момент запускать.

Неактивен

 

#5 17.12.2010 22:14:39

Twix
Завсегдатай
Зарегистрирован: 21.02.2008
Сообщений: 88

Re: Хранимые процедуры

С этим сложнее... писал давно на С++, но было очень давно

Неактивен

 

#6 18.12.2010 17:56:27

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Хранимые процедуры

Вы в любом случае будете складывать файлики каким-то сценарием.
Почему не выполнять команды из того же сценария?

Неактивен

 

#7 21.12.2010 18:40:34

Twix
Завсегдатай
Зарегистрирован: 21.02.2008
Сообщений: 88

Re: Хранимые процедуры

Если можно, поподробнее о последнем.
С уважением, Владимир.

Неактивен

 

#8 21.12.2010 18:50:37

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Хранимые процедуры

Файл C:\214.txt — откуда он такой?

Неактивен

 

#9 22.12.2010 20:58:16

Twix
Завсегдатай
Зарегистрирован: 21.02.2008
Сообщений: 88

Re: Хранимые процедуры

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

Неактивен

 

#10 23.12.2010 15:31:05

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Хранимые процедуры

Отлично, почему тогда нельзя вручную запускать LOAD DATA INFILE?
Или даже простой go.bat, который будет делать
mysql -e "LOAD DATA LOCAL INFILE ..."

Неактивен

 

#11 24.12.2010 19:08:59

Twix
Завсегдатай
Зарегистрирован: 21.02.2008
Сообщений: 88

Re: Хранимые процедуры

paulus написал:

Отлично, почему тогда нельзя вручную запускать LOAD DATA INFILE?
..."

Таких запросов прийдёться делать три, потому что три подобных файла - 214, 183, 126.txt . Хотелось бы упростить администрирование БД, не всегда буду у компа, прийдётся рядовым работникам заниматься этим.

paulus написал:

Или даже простой go.bat, который будет делать
mysql -e "LOAD DATA LOCAL INFILE ..."

А вот с этим не знаком , если можно , то поподробнее.

С уважением, Владимир.

Неактивен

 

#12 24.12.2010 20:53:19

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Хранимые процедуры

Если написать команду в файл с расширением .bat, а потом его выполнить,
то выполнится команда. Не знаю, как подробнее написать smile

Неактивен

 

#13 24.12.2010 21:06:50

Twix
Завсегдатай
Зарегистрирован: 21.02.2008
Сообщений: 88

Re: Хранимые процедуры

Что то слышал про "батники" , но не писал подобного ни когда. Подскажите , где про сиё почитать ???

Неактивен

 

#14 25.12.2010 17:57:37

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Хранимые процедуры

Не представляю. Просто напишите команду в файл и запустите. Думаю, этого
хватит за глаза.

Неактивен

 

#15 20.08.2019 23:52:49

New
Участник
Зарегистрирован: 20.08.2019
Сообщений: 2

Re: Хранимые процедуры

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

Неактивен

 

#16 21.08.2019 19:33:10

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Хранимые процедуры

Воу! Тредик 2010 года smile

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

Неактивен

 

#17 22.08.2019 00:21:07

New
Участник
Зарегистрирован: 20.08.2019
Сообщений: 2

Re: Хранимые процедуры

А казалось, что тема уже давно заглохла )

Жаль, конечно, что такую простейшую операцию нельзя представить в виде функции и хранить на сервере для единообразия...

P.S. А "безопасности" и без этого везде хватает, как и разных бестолковых кодировок, в которых уже сами путаются.

Неактивен

 

#18 22.08.2019 10:01:42

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Хранимые процедуры

Какое отношение кодировка или их количество имеет к безопасности?
LOAD DATA, при неправильном использовании,  открывает большую дыру в безопасности. По этому много информации есть в интернете. Недавно даже была статья, что многие сайты, которые используют MySql, имели уязвимости связанную с LOAD DATA.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson