2017-02-14 172 views
0

我想使用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」'它工作正常。我認爲問題是使用參數...除了使用參數之外,有沒有任何選項? –

回答

1

經過四處搜索,結果證明你不能不能使用參數化的值爲文件名,它必須是字符串文字。在這種情況下,您將不得不手動建立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