SQL新手求高效插入600条4列数据到表的方法
高效批量插入600条SQL数据的实用方法
嘿,作为SQL新手,手动敲600条单条INSERT确实太折磨人了!我刚学SQL的时候也干过这傻事,后来发现了几个超级好用的提速技巧,分享给你:
1. 多行VALUES批量插入(最易上手)
这是最直接的改进,把所有数据行放到同一个INSERT语句里,减少数据库的执行次数,效率提升不止一点点。比如:
INSERT INTO myTable(col1, col2, col3, col4) VALUES ('value 1', 'value 2', 'value 3', 'value 4'), ('value 5', 'value 6', 'value 7', 'value 8'), -- 这里继续粘贴剩下的行,一次放600条完全没问题(大部分数据库默认支持单次插入上千条) ('value 2397', 'value 2398', 'value 2399', 'value 2400');
小技巧:不用手动敲每一行!把数据放到Excel里,用公式拼接成('值1','值2','值3','值4'),的格式,比如在Excel单元格里写:
="('"&A1&"','"&B1&"','"&C1&"','"&D1&"'),"
然后下拉填充所有行,复制粘贴到SQL语句里就行,5分钟搞定600行。
2. 从CSV/Excel文件直接导入(最快方案)
如果你的数据已经在Excel或者CSV文件里了,直接用数据库的导入工具,比写SQL快10倍!举几个常用数据库的例子:
MySQL
用LOAD DATA INFILE命令(注意文件路径权限):
LOAD DATA INFILE '/你的文件路径/data.csv' INTO TABLE myTable FIELDS TERMINATED BY ',' -- CSV的分隔符 ENCLOSED BY '"' -- 字符串的包裹符 LINES TERMINATED BY '\n' -- 行分隔符 IGNORE 1 ROWS; -- 如果CSV有表头,忽略第一行
PostgreSQL
用COPY命令:
COPY myTable(col1, col2, col3, col4) FROM '/你的文件路径/data.csv' DELIMITER ',' CSV HEADER; -- 表示第一行是表头
新手友好版:直接用Navicat、DBeaver、phpMyAdmin这些图形化工具,找“导入数据”的功能,跟着向导选文件、匹配列,点几下就完成了,完全不用写代码。
3. 用循环/存储过程生成数据(适合有规律的数据)
如果你的数据是有规律的(比如col1是1到600的数字,col2是固定前缀加序号),可以让数据库自动生成插入语句,比如MySQL的存储过程:
DELIMITER // CREATE PROCEDURE Insert600Rows() BEGIN DECLARE rowNum INT DEFAULT 1; WHILE rowNum <= 600 DO INSERT INTO myTable(col1, col2, col3, col4) VALUES( CONCAT('item_', rowNum), CONCAT('desc_', rowNum), rowNum * 10, NOW() -- 比如插入当前时间 ); SET rowNum = rowNum + 1; END WHILE; END // DELIMITER ; -- 调用这个存储过程,直接插入600条 CALL Insert600Rows();
其他数据库比如SQL Server可以用WHILE循环,Oracle用FOR循环,原理都是一样的,适合数据有规律的场景。
内容的提问来源于stack exchange,提问作者morgh
相关产品推荐
相关产品推荐

