簡體   English   中英

可以選擇... into outfile而不是將其保存到文件中,而是將其保存在blob中

[英]Can select … into outfile not save it into a file, but save it in blob instead

我想做一個select * from x into outfile 'c:/test.csv'
但是我沒有保存到outfile test.csv,而是將其保存到blob字段中。

我正在從Windows上的客戶端開始查詢。
MySQL服務器位於Windows或Linux上的服務器上(可以是兩者)。
但我希望文件客戶端,而不是服務器上的某個地方。

BTW
用Delphi 2007編寫的客戶端軟件,使用ZEOS連接到遠程服務器上的MySQL數據庫。

如何獲取outfile客戶端而不是服務器端?

Johan,MySql從正在運行的服務器執行這句話。 在客戶端創建文件的唯一方法是傳遞指向客戶端計算機的共享文件夾位置和文件名。 MySQL服務(守護程序)所有者也必須擁有足夠的權限才能寫入目標目錄。

來自Mysql 文檔

SELECT ... INTO OUTFILE語句主要用於讓您非常快速地將表轉儲到服務器計算機上的文本文件中。 如果要在服務器主機之外的其他主機上創建生成的文件,通常無法使用SELECT ... INTO OUTFILE,因為無法相對於服務器主機的文件系統寫入文件的路徑。

但是,如果遠程計算機上安裝了MySQL客戶端軟件,則可以使用客戶端命令(如mysql -e“SELECT ...”> file_name)在客戶端主機上生成該文件。

如果可以使用服務器文件系統上的網絡映射路徑訪問遠程主機上文件的位置,則還可以在服務器主機以外的其他主機上創建生成的文件 在這種情況下,目標主機上不需要存在mysql(或其他一些MySQL客戶端程序)。

OK如果人們想知道我為TMS DBAdvGrid做了一個變通方法來導出CSV文件。

我向TAdvStringGrid添加了一個新屬性

public {properties}
property HideCSVHeader: boolean read FHideCSVHeader write FHideCSVHeader;

並更改了以下代碼:

procedure TAdvStringGrid.OutputToCSV(FileName:String;appendmode: Boolean; 
  Unicode: boolean);
....
//changed this code further down the procedure:
//for z := SaveStartRow to SaveEndRow do 
//Into:

MyStartRow:= SaveStartRow;
if HideCSVHeader then Inc(MyStartRow);
for z := MyStartRow to SaveEndRow do   

然后當我打電話

procedure TForm1.BtnExportClick(Sender: TObject);
var
  Filename: string;
  succes: Boolean;
begin
  succes:= True;
  if ExportSaveDialog.Execute then begin
    Filename:= ExportSaveDialog.FileName;
    try
      DBGridExportExact.Delimiter:= ';';
      DBGridExportExact.AlwaysQuotes:= True;
      DBGridExportExact.QuoteEmptyCells:= True;
      DBGridExportExact.SaveHiddenCells:= True;
      DBGridExportExact.HideCSVHeader:= True;
      DBGridExportExact.SaveToCSV(bestandsnaam);
    except
      succes:= False;
    end;
    if not(succes) then StatusLabel.Caption:= 'Error bla bla';
  end;
end;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM