mysqldumpユーティリティを呼び出さずに、SQL構文を使用してテーブルから一括挿入ステートメントを作成するにはどうすればよいですか?
以下のようにBULKINSERTSQL 形式SELECT ... INTO OUTFILE 'file_name'
の出力ではなく、CSVファイルを生成するため、は機能しないことに注意してください。
INSERT INTO mytable VALUES (1,2), (5,5), ...;
走る
SELECT * FROM mytable INTO OUTFILE 'dump.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
次に、出力された CSV を sed/perl/python/shell/whateverelse で後処理して、SQL スクリプトを取得します。
たとえば、Python では次のようになります。
import csv
with open('dump.csv',"rU") as inf:
reader = csv.reader(inf)
with open("dump.sql","wb") as outf:
for row in reader:
outf.write('insert into mytable values ("'+ '","'.join(row) +'");\n')
Null
スクリプトは、列の値の s および引用符文字を回避できません。