利用Excel生成的Insert命令
有时候数据直接是一个excel文件,要把数据加入数据库的话,一般有两种常见的方式,第一是写数据处理脚本,第二是使用Excel公式+文本拼接。
当数据量特别大的时候用脚本更为合适,当数据量不大的时候用Excel公式+文本拼接的方式更为方便。
="INSERT INTO your_table (field1, field2) VALUES ('" & A2 & "', " & IF(ISBLANK(B2), "NULL", B2) & ");"


excel知识点:列用大写字母(A、B、C...),行用数字(1、2、3...),两者直接相连组成单元格地址(如A1、B2)。在公式中使用时,必须确保这种标准格式,避免添加不必要的标点符号。例如,正确的引用应该是"&A1&",而不是"&A,1&"或"&A.1&"。当处理SQL语句拼接时,特别要注意文本字段需要用单引号包裹(如'"&A1&"'),数字字段则直接引用(如"&B1&"),空值要转换为NULL。对于固定列但需要行自动变化的情况,应该使用混合引用(如$A1),这样在拖动填充时列标保持固定而行号会自动递增。日期、浮点数等特殊数据类型需要额外处理,比如用TEXT函数格式化日期(TEXT(A1,"yyyy-mm-dd")),用ROUND函数控制小数精度(ROUND(B1,4))。在 Excel 中,& 是 拼接运算符,用来把多个内容组合成一个完整的字符串。
excel公式测试用例:
-
把下面这个公式输入在
AA5: -
然后向下拖动填充
-
你将看到输出类似:
拖动后仍然显示的是 A5、A6、A7… 这种显式文本,而不是实际的值。这说明:
当前单元格内容是文本,不是公式
如果你复制粘贴时总变成文本怎么办?
-
粘贴之前,选中目标区域,右键 → 设置单元格格式 → 选“常规”或“数值”,不要是“文本”
-
然后粘贴公式,确保粘贴后显示的是“结果”,而不是显示公式本身
但问题又来了,Excel 的单元格公式长度限制(大约 8,192 字符)限制了拼接整条 INSERT 的能力。
一种解决思路是我们可以将公式拆分为多个单元格,另外一种是我们直接用row()自增函数省略表头的字段说明。
在 AA5 写:SQL 前缀
="INSERT INTO temp_combined_data VALUES (" & (ROW()-4) & ", '" &
A5 & "', '" & B5 & "', '" & C5 & "', '" & D5 & "', '" & E5 & "', '" &
"110101199001018888', '13800000000', '男', '" &
G5 & "', '" & H5 & "', '" & I5 & "', '" & J5 & "', " &
K5 & ", " & L5 & ", NOW(), NOW(), 'FORM123456789', '"
在 AB5 写:SQL 后半(含日期转换)
=TEXT(P5, "yyyy-mm-dd") & "', '" &
R5 & "', '" & S5 & "', '" & T5 & "', " &
U5 & ", NULL, NULL, '" & X5 & "', NULL, 3);"


本文来自博客园,作者:z_s_s,转载请注明原文链接:https://www.cnblogs.com/zhoushusheng/p/18927602

浙公网安备 33010602011771号