質問

sqlには、exmaple用のingo fileオプションを使用して、データをファイルにダンプするオプションがあります

SELECT * from FIshReport INTO OUTFILE './FishyFile'

問題は、このコマンドがその前にファイルが存在しなかった場合にのみ許可されることです。ファイルを作成し、データを入力します。それで、この方法でファイルにデータを追加する方法はありますか?

役に立ちましたか?

解決

SELECT SYNTAXのMySQLページが示すように:

http://dev.mysql.com/doc/refman/5.0/en/select.html

これに代わるものは、MySQLクライアントからSELECTを発行することです。

However, if the MySQL client software is installed on the remote machine,
you can instead use a client command such as mysql -e "SELECT ..." > file_name 
to generate the file on the client host. 

あなたの場合、これは次のように変更されます。

mysql -e "SELECT * from FishReport" >> file_name

ファイルに追加するだけです。

TCLスクリプトから、これをexecコマンドとして単純に発行できます。

http://www.tcl.tk/man/tcl/tutorial/tcl26.html

他のヒント

MySQLでは、既存のファイルにデータを追加したり、セキュリティ上の理由で既存のファイルを上書きしたりしないと思います。回避策は、ResutをSeperateファイルに保存してから、ファイルIOを追加することです。

SQLスクリプトから出力を常にファイルに追加することができます >>

たとえば、(Sybaseの場合):

isql < script.sql >> outputfile.out

MySQLに相当するものが何であるかはわかりませんが、原則は同じでなければなりません。

もちろん、出力はすべて1つのファイルに移動するため、SQLスクリプトがさまざまなSQL選択を異なる出力ファイルに出力している場合、スクリプトを分割する必要があります。

変数に追加するだけです。次に、ユニオンでselectを使用します。

declare t varchar(100);

set @myvar = concat('
    select *  INTO OUTFILE \'',file,'\'
    from (
       select \'',t,'\'
       union all
       SELECT col from tbl where x      
    ) a' 
);
PREPARE stmt1 FROM @myvar;
EXECUTE stmt1;
Deallocate prepare stmt1;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top