3

したいですselect * from x into outfile 'c:/test.csv'
しかし、出力ファイル test.csv に保存する代わりに、blob フィールドに保存したいと考えています。

Windows上のクライアントからクエリを開始しています。
MySQL サーバーは、Windows または Linux のサーバー上にあります (両方の場合があります)。
しかし、サーバー上のどこかではなく、クライアント側にファイルを置きたいです。

ところで
、クライアント ソフトウェアは Delphi 2007 で作成され、ZEOS を使用してリモート サーバー上の MySQL データベースに接続します。

サーバー側ではなく、クライアント側の出力ファイルを取得するにはどうすればよいですか?

4

2 に答える 2

3

Johan、MySql が実行されているサーバーからこの文を実行します。クライアント側でファイルを作成する唯一の方法は、クライアント マシンを指す共有フォルダーの場所とファイル名を渡すことです。また、MySQL サービス (デーモン) の所有者は、ターゲット ディレクトリに書き込むための適切な権限を持っている必要があります。

Mysqlのドキュメントから

SELECT ... INTO OUTFILE ステートメントの主な目的は、テーブルをサーバー マシン上のテキスト ファイルにすばやくダンプできるようにすることです。結果のファイルをサーバー ホスト以外のホストに作成する場合、サーバー ホストのファイル システムに関連するファイルへのパスを書き込む方法がないため、通常は SELECT ... INTO OUTFILE を使用できません。

ただし、MySQL クライアント ソフトウェアがリモート マシンにインストールされている場合は、代わりに mysql -e "SELECT ..." > file_name などのクライアント コマンドを使用して、クライアント ホストでファイルを生成できます。

サーバーのファイル システム上でネットワーク マップされたパスを使用してリモート ホスト上のファイルの場所にアクセスできる場合は、サーバー ホスト以外の別のホスト上に結果のファイルを作成することもできます。この場合、ターゲット ホストに mysql (またはその他の MySQL クライアント プログラム) が存在する必要はありません。

于 2011-04-20T13:06:03.823 に答える
1

人々が知りたい場合のために、私は CSV ファイルをエクスポートするために TMS DBAdvGrid に回避策を作成しました。

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;
于 2011-04-20T21:01:58.720 に答える