>背景:我在mysql DB中使用phpMyAdmin(MySQL Workbench(。我编写了一些PHP代码来导入数据库中的数据,并使用Windows的任务调度程序执行它。<=这工作正常!
现在我想将一些数据导出到 Windows 文件夹中的文件中。首先,我用phpMyAdmin编写SQL代码以查看一些调试信息。<=这是出现问题的地方。
我的主题:我想导出数据库的一些列。我的目标是在文件名中放入变量CURRENT_TIMESTAMP
。为此,我使用Concat
语句。 我的代码(发布在下面(得到以下错误的结果:
无法创建/写入文件"C:\Temp\Export\2018-08-08 09:21:27.txt"(错误代码:13"权限被拒绝"(
有趣的是,如果我将变量CURRENT_TIMESTAMP
替换为例如"Hello World",则没有错误,并且我的文件是在文件夹中创建的。
这是我的代码:
*set @sql = concat("SELECT `LS_ID_Nr`,
`Stk_pro_Krt_DL` * `Krt_DL` + `RB_Stk_pro_Krt_DL` * `RB_Krt_DL`,
`Umstellzeit`,
`Produktionszeit`,
`Teilmeldung`,
`Fertigmeldung` INTO OUTFILE 'C:/Temp/Export/",CURRENT_TIMESTAMP,".txt' fields terminated by ';' lines terminated by 'rn' From praemie where Proof_P = 0");
prepare s1 from @sql;
execute s1;
DROP PREPARE s1;
UPDATE praemie SET Proof_P = 1 WHERE Proof_P = 0;*
有没有人知道为什么使用变量会有Permission Error
?提前感谢!
噢噢....
我现在明白了! 问题是,窗口不处理文件名中的":"。所以我必须像这样使用 Date_Format 语句编辑代码:
set @sql =
concat("SELECT `LS_ID_Nr`, `Stk_pro_Krt_DL` * `Krt_DL` + `RB_Stk_pro_Krt_DL` * `RB_Krt_DL`,
`Umstellzeit`, `Produktionszeit`, `Teilmeldung`, `Fertigmeldung`
INTO OUTFILE 'C:/Temp/Export/Test - ", DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')," - Test.txt'
fields terminated by ';'
lines terminated by 'rn'
From praemie where Proof_P = 0")