2011-04-20 63 views
3

我想做一個select * from x into outfile 'c:/test.csv'
但我不想保存到outfile test.csv中,而是想將它保存到blob字段中。可以選擇...到outfile不保存到一個文件,但保存在blob而不是

我開始從客戶的查詢Windows
MySQL服務器位於Windows或Linux的服務器上(可以同時使用)。
但我想有文件客戶端,而不是在服務器上的某個地方。

BTW
在寫於2007年德爾福,並使用ZEOS連接到MySQL數據庫的遠程服務器上的客戶端軟件。

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

+0

我不明白。您開始詢問如何將查詢結果保存到blob字段*而不是文件*,但是接下來您將繼續詢問如何在客戶端獲取文件。你想要一個文件嗎?請編輯你的問題來澄清。 – 2011-04-20 13:55:18

+0

@rob無論是在blob中還是在客戶端。 – Johan 2011-04-20 15:24:22

+0

現在我使用DBAdvGrid.OutputToCSV *(必須更改TAdvStringGrid的源代碼以防止它導出標題行,但它有效)* – Johan 2011-04-20 20:52:50

回答

1

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; 
3

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

從MySQL Documentation

的SELECT ... INTO OUTFILE語句 的目的主要是讓你很 快速轉儲一個表到一個文本文件上 服務器機器。如果你想 創建一些 其他主機比在服務器主機上生成的文件,你 通常不能使用SELECT ... INTO OUTFILE因爲沒有辦法寫 相對的文件路徑 服務器主機的文件系統。

但是,如果MySQL客戶端軟件 安裝了遠程機器, 可以改爲使用客戶端命令 比如mysql -e上的「SELECT ...」> FILE_NAME生成 客戶端上的文件主辦。

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

相關問題