0

mysqldumpユーティリティを呼び出さずに、SQL構文を使用してテーブルから一括挿入ステートメントを作成するにはどうすればよいですか?

以下のようにBULKINSERTSQL 形式SELECT ... INTO OUTFILE 'file_name'の出力ではなく、CSVファイルを生成するため、は機能しないことに注意してください。

INSERT INTO mytable VALUES (1,2), (5,5), ...;
4

1 に答える 1

0

走る

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 および引用符文字を回避できません。

于 2012-08-31T13:14:40.220 に答える