SQLから既存のファイルにデータを追加する方法
-
13-10-2019 - |
質問
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コマンドとして単純に発行できます。
他のヒント
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;
所属していません StackOverflow