德尔福:使用参数

问题描述:

我想使用MySQL使用Delphi中Select Into Outfile命令SELECT INTO OUTFILE:德尔福:使用参数

dirfile:=pathProg+SaveDialog1.FileName+'.csv'; 

With dm.Query 
do 
    begin 
    SQL.Clear; 
    SQL.Text:='SELECT * FROM tabel1 INTO OUTFILE :parfile'; 
    Parameters.ParamByName('parfile').value:=dirfile; 
    ExecSQL; 
    end; 

但它不能正常工作,它返回一个eror:

你有在您的SQL语法错误检查手册,对应于您的mariadb服务器版本的权利syntakx使用附近

有没有什么建议来解决这个问题?

+0

我可以找到的'INTO OUTFILE'的所有示例都使用硬编码的文件名字符串。你确定输入参数在这里有效吗?不仅如此,我可以为'INTO OUTFILE'找到的所有文档都说输出文件是在DB服务器上创建的,并且'FILE'权限需要使用'INTO OUTFILE'。你有这种权限吗?除非客户端和服务器位于同一台计算机上,否则指定客户端应用程序本地的路径不会有效。 –

+0

如果我将参数更改为文件名字符串'Select * from table1 INTO OUTFILE“D:\ file1.csv”'它工作正常。我认为问题是使用参数...除了使用参数之外,有没有任何选项? –

经过四处搜索,结果证明你不能不能使用参数化的值为文件名,它必须是字符串文字。在这种情况下,您将不得不手动建立SQL字符串,例如:

dirfile:=pathProg+SaveDialog1.FileName+'.csv'; 

with dm.Query do 
begin 
    SQL.Text := 'SELECT * FROM tabel1 INTO OUTFILE ' + QuotedStr(dirfile); 
    ExecSQL; 
end; 
+0

哇....它的工作...谢谢你.... –

+2

接受答案,如果它的作品 – Fero