0

如何在不调用 mysqldump 实用程序的情况下使用 SQL 语法从表中创建批量插入语句?

请记住,这 SELECT ... INTO OUTFILE 'file_name'对我不起作用,因为它生成一个 CSV 文件,而不是BULK INSERT SQL格式的输出,如下所示

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';

然后使用 sed/perl/python/shell/whateverelse 对输出 CSV 进行后处理以获取 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 回答