MySQL – загрузить файл данных с переменным путем

У меня возникла проблема с установкой пути переменной для помещения данных в мою таблицу. Вот как я строю свой путь:

SET @path1 = CONCAT('C:/Projekte/Metrics/DXL_CSV_EXPORT_DATA/', YEAR(NOW()), '_',    MONTH(NOW()), '_', DAY(NOW()), '%', '/_','BeMiko/');`

Каждый день на сервере создается новая папка. Я хочу автоматически импортировать информацию из файлов .csv из этих папок каждый день.

Я импортирую данные из файлов с помощью:

LOAD DATA INFILE 
path...
IGNORE INTO TABLE table1 FIELDS TERMINATED BY ';' ENCLOSED BY '"'
LINES TERMINATED BY '<*line_end*>\r\n' IGNORE 1 ROWS;

Как использовать строку внутри моей переменной @path1 в качестве пути? Или, если это невозможно: Есть ли другие способы решить эту проблему?


person Officer Bacon    schedule 19.08.2014    source источник
comment
Вы должны иметь возможность генерировать оператор SQL на лету. Вот пример.   -  person RandomSeed    schedule 19.08.2014
comment
Это может сработать, но почему-то я всегда получаю сообщение об ошибке, если пытаюсь выполнить процедуру. Ошибка гласит: эта команда еще не поддерживается в протоколе подготовленного оператора (код ошибки 1295). Как я могу это исправить?   -  person Officer Bacon    schedule 19.08.2014
comment
Упс. Тогда я не знаю. У вас есть доступ к оболочке? Тогда вы могли бы mysql -e "LOAD DATA INFILE $var ..."   -  person RandomSeed    schedule 19.08.2014
comment
Работа в оболочке - это не то, чем я должен заниматься прямо сейчас. Мне нужно создать процедуру, которая выполняется один раз в день (событие..).   -  person Officer Bacon    schedule 19.08.2014


Ответы (1)


Переменные нельзя использовать для замены путей в операторе LOAD DATA INFILE.

Также:

Пользовательские переменные могут использоваться в большинстве контекстов, где разрешены выражения. В настоящее время это не включает контексты, которые явно требуют литерального значения, например, в предложении LIMIT оператора SELECT или предложении IGNORE N LINES оператора LOAD DATA.

person Bogdan Mircea Stanciu    schedule 28.12.2016