如何在不调用 mysqldump 实用程序的情况下使用 SQL 语法从表中创建批量插入语句?
请记住,这 SELECT ... INTO OUTFILE 'file_name'
对我不起作用,因为它生成一个 CSV 文件,而不是BULK INSERT SQL格式的输出,如下所示
INSERT INTO mytable VALUES (1,2), (5,5), ...;
跑
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 和引号字符。