很多时候,我们想把excel中数据导入到数据库中。
方法有很多种,比如直接拷贝然后黏贴进编辑状态的框中,这种情况有个弊端,就是excel中每列的数据必须和数据库中一一对应,这个很难,基本上不太可能,数据库中有很多的自动增长或者有默认值得数据,如果要调整成一一对应,调整excel的时间可谓花费不少时间。
下面推荐一种可以在excel中直接生成sql语句,复制进去执行就好了。思路是很清晰的,就是有个sql模板,excel中数据套进模板就可以了,下面看看excel中已经有这种强大的功能函数,直接调用就可以了,不得不赞叹下,强大的excel。
假定你的Excel表格中有A、B、C三列数据,希望导入到数据库users表中,对应的字段分别是name,sex,age 。
1、excel增加一列(D列)
2、在第一行的D列,就是D1中输入公式: =CONCATENATE("insert into users (name,sex,age) values (‘",A1,"‘,‘",B1,"‘,‘",C1,"‘);")
3、此时D1已经生成了如下的sql语句: "insert into users (name,sex,age) values (‘ls‘,‘女‘,‘24‘)";
4、将D1的公式复制到所有行的D列
5、此时D列已经生成了所有的sql语句
excel生成sql语句
标签:默认 生成 cat 自动 导入 name insert 方法 excel表格
小编还为您整理了以下内容,可能对您也有帮助:
如何把Excel数据转化成SQL语句
1、例如我想把图1的数据给添加到图2的数据库中;
2、如图2.
3、先写个sql语句确认一条数据能插入成功。
4、然后复制这条sql语句打开excle,选中表格后的一个单元格,在上方函数位置粘贴刚才的sql语句并做修改:="INSERT INTO
student(id,name,age)
VALUES("&A2&",'"&B2&"','"&C2&"')" 注意前面有个=
然后整个sql用 “”包围住。
5、确认后就可以看到在单元格中会自动生成一条sql语句。选中单元格下拉,会发现所有的行后面都会生成一条sql语句。
6、复制所有的sql语句。
7、在navicat中 执行这些SQL语句,注意批量执行的时候,要在后面加分号 ; 。
8、刷新表,可见批量转化成功。
如何将Excel中表结构数据自动生成SQL脚本的方法
一: 在本地PC新建一个Excel文件(例如:excel2007)
准备工作,左键选择excel文本左上角的图标,选择“Excle选项”。1. 点击“信任中心”->“信任中心设置”->“宏设置”->选择“启用所有宏...”选项。“开发人员宏设置”选项也勾选上。 2. 点击“信任中心”->“信任中心设置”->选择“个人信息选项”,将“文档特定设置”上面默认选择去掉,避免在保存脚本时报错。
二: 在本地PC新建一个excel文件(例如: D:\testdate.xlsx)
按快捷键“ALT + F11”进入宏编辑,输入如下代码后保存。summary()为目标生成代码,SQL()为生成SQL脚本文件代码,按条件生成SQL的脚本如下:
Sub summary()
Dim i As Integer
i = 2
ThisWorkbook.Worksheets(1).Columns(2).Clear
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> " " Then
ThisWorkbook.Worksheets(1).Cells(i, 2).Value = sh.Name
ThisWorkbook.Worksheets(1).Cells(i, 2).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
sh.Name + "!A1", TextToDisplay:=sh.Name
i = i + 1
End If
Next sh
ThisWorkbook.Worksheets(1).Cells.Select
With Selection.Font
.Name = "目录"
.Size = 9
.Strikethrough = False
.Superscript. = False
.Subscript. = False
.OutlineFont = False
.Shadow = False
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
End Sub
Sub SQL()
Dim i As Integer
i = 1
Dim ADO_Stream As Object
Dim strSQL, strDelSQL As String
Dim strTblName As String
Dim col As Long
Dim row As Long
Dim str As String
Dim PK As String
Dim cnt As Integer
PK = "PK"
Dim rowcounts As Long
rowcounts = 0
Dim filecount As Long
filecount = 0
Set ADO_Stream = CreateObject("ADODB.Stream")
ADO_Stream.Type = 2
ADO_Stream.Mode = 3
ADO_Stream.Charset = "unicode"
ADO_Stream.Open
Dim checkType As String
For Each sh In ThisWorkbook.Worksheets
cnt = 0
If sh.Name <> " " And InStr(sh.Name, "template") = 0 Then
strTblName = sh.Cells(1, 2).Value
rowcounts = 1
'Insert SQL
row = 6
Do While sh.Cells(row, 1).Value <> ""
strDelSQL = "delete from " + strTblName + " where "
strSQL = "Insert into " + strTblName + " ("
col = 1
Do While sh.Cells(3, col).Value <> ""
If col <> 1 Then
strSQL = strSQL + ", "
End If
strSQL = strSQL + sh.Cells(3, col).Value
col = col + 1
Loop
strSQL = strSQL + ") VALUES ("
col = 1
Do While sh.Cells(3, col).Value <> ""
str = Trim(CStr(sh.Cells(row, col).Value))
If InStr(Trim(CStr(sh.Cells(2, col).Value)), PK) <> 0 Then
If cnt > 0 Then
strDelSQL = strDelSQL + " and "
End If
strDelSQL = strDelSQL + Trim(CStr(sh.Cells(3, col).Value)) + " = '" + str + "'"
cnt = cnt + 1
End If
If col <> 1 Then
strSQL = strSQL + ", "
End If
If (InStr(Trim(CStr(sh.Cells(4, col).Value)), "Integer") = 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "Decimal") = 0) And ((InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") = 0) Or _
((Len(str) > 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0))) Then
If (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(5, col).Value)), "No") = 0) Then
str = "NULL"
ElseIf InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0 Then
str = "to_date('" + str + "','yyyy-mm-dd hh24:mi:ss')"
Else
str = "'" + str + "'"
End If
strSQL = strSQL + str
ElseIf (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0) Then
strSQL = strSQL + "NULL"
Else
If (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(5, col).Value)), "No") = 0) Then
str = "NULL"
End If
strSQL = strSQL + str
End If
col = col + 1
Loop
strDelSQL = strDelSQL + ";" + vbCrLf
ADO_Stream.WriteText strDelSQL
strSQL = strSQL + ");" + vbCrLf
ADO_Stream.WriteText strSQL
row = row + 1
Loop
End If
i = i + 1
rowcounts = 0
filecount = 0
Next sh
ADO_Stream.SaveToFile ThisWorkbook.Path & "\MstSQL(delete by condition).txt", 2
ADO_Stream.Close
Set ADO_Stream = Nothing
End Sub
点击“保存”宏脚本,主要的一步完成。
三: 在excel文件(test.xlsx)的首页创建两个图标,分别选择右键指定宏,一个指定上面的summary(),一个指定上面的SQL()。然后就可以在后续的sheet页创建自己需要生成SQL脚本的表结构名称了,记得每个sheet页面对应一个表结构及数据,使用方法如下:
A,将需要更新的对象表数据整个sheet拷进工具中,数据只保留需要更新的数据。
B,在第2行标出主键字段,填上“PK”即可。
看看代码
http://www.51testing.com/html/41/195041-831346.html
如何将Excel中表结构数据自动生成SQL脚本的方法
一: 在本地PC新建一个Excel文件(例如:excel2007)
准备工作,左键选择excel文本左上角的图标,选择“Excle选项”。1. 点击“信任中心”->“信任中心设置”->“宏设置”->选择“启用所有宏...”选项。“开发人员宏设置”选项也勾选上。 2. 点击“信任中心”->“信任中心设置”->选择“个人信息选项”,将“文档特定设置”上面默认选择去掉,避免在保存脚本时报错。
二: 在本地PC新建一个excel文件(例如: D:\testdate.xlsx)
按快捷键“ALT + F11”进入宏编辑,输入如下代码后保存。summary()为目标生成代码,SQL()为生成SQL脚本文件代码,按条件生成SQL的脚本如下:
Sub summary()
Dim i As Integer
i = 2
ThisWorkbook.Worksheets(1).Columns(2).Clear
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> " " Then
ThisWorkbook.Worksheets(1).Cells(i, 2).Value = sh.Name
ThisWorkbook.Worksheets(1).Cells(i, 2).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
sh.Name + "!A1", TextToDisplay:=sh.Name
i = i + 1
End If
Next sh
ThisWorkbook.Worksheets(1).Cells.Select
With Selection.Font
.Name = "目录"
.Size = 9
.Strikethrough = False
.Superscript. = False
.Subscript. = False
.OutlineFont = False
.Shadow = False
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
End Sub
Sub SQL()
Dim i As Integer
i = 1
Dim ADO_Stream As Object
Dim strSQL, strDelSQL As String
Dim strTblName As String
Dim col As Long
Dim row As Long
Dim str As String
Dim PK As String
Dim cnt As Integer
PK = "PK"
Dim rowcounts As Long
rowcounts = 0
Dim filecount As Long
filecount = 0
Set ADO_Stream = CreateObject("ADODB.Stream")
ADO_Stream.Type = 2
ADO_Stream.Mode = 3
ADO_Stream.Charset = "unicode"
ADO_Stream.Open
Dim checkType As String
For Each sh In ThisWorkbook.Worksheets
cnt = 0
If sh.Name <> " " And InStr(sh.Name, "template") = 0 Then
strTblName = sh.Cells(1, 2).Value
rowcounts = 1
'Insert SQL
row = 6
Do While sh.Cells(row, 1).Value <> ""
strDelSQL = "delete from " + strTblName + " where "
strSQL = "Insert into " + strTblName + " ("
col = 1
Do While sh.Cells(3, col).Value <> ""
If col <> 1 Then
strSQL = strSQL + ", "
End If
strSQL = strSQL + sh.Cells(3, col).Value
col = col + 1
Loop
strSQL = strSQL + ") VALUES ("
col = 1
Do While sh.Cells(3, col).Value <> ""
str = Trim(CStr(sh.Cells(row, col).Value))
If InStr(Trim(CStr(sh.Cells(2, col).Value)), PK) <> 0 Then
If cnt > 0 Then
strDelSQL = strDelSQL + " and "
End If
strDelSQL = strDelSQL + Trim(CStr(sh.Cells(3, col).Value)) + " = '" + str + "'"
cnt = cnt + 1
End If
If col <> 1 Then
strSQL = strSQL + ", "
End If
If (InStr(Trim(CStr(sh.Cells(4, col).Value)), "Integer") = 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "Decimal") = 0) And ((InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") = 0) Or _
((Len(str) > 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0))) Then
If (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(5, col).Value)), "No") = 0) Then
str = "NULL"
ElseIf InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0 Then
str = "to_date('" + str + "','yyyy-mm-dd hh24:mi:ss')"
Else
str = "'" + str + "'"
End If
strSQL = strSQL + str
ElseIf (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0) Then
strSQL = strSQL + "NULL"
Else
If (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(5, col).Value)), "No") = 0) Then
str = "NULL"
End If
strSQL = strSQL + str
End If
col = col + 1
Loop
strDelSQL = strDelSQL + ";" + vbCrLf
ADO_Stream.WriteText strDelSQL
strSQL = strSQL + ");" + vbCrLf
ADO_Stream.WriteText strSQL
row = row + 1
Loop
End If
i = i + 1
rowcounts = 0
filecount = 0
Next sh
ADO_Stream.SaveToFile ThisWorkbook.Path & "\MstSQL(delete by condition).txt", 2
ADO_Stream.Close
Set ADO_Stream = Nothing
End Sub
点击“保存”宏脚本,主要的一步完成。
三: 在excel文件(test.xlsx)的首页创建两个图标,分别选择右键指定宏,一个指定上面的summary(),一个指定上面的SQL()。然后就可以在后续的sheet页创建自己需要生成SQL脚本的表结构名称了,记得每个sheet页面对应一个表结构及数据,使用方法如下:
A,将需要更新的对象表数据整个sheet拷进工具中,数据只保留需要更新的数据。
B,在第2行标出主键字段,填上“PK”即可。
看看代码
http://www.51testing.com/html/41/195041-831346.html
如何把Excel资料转化成SQL语句
1、开启企业管理器,开启要汇入资料的资料库,在表上按右键,所有任务-->汇入资料,弹出DTS汇入/汇出向导,按 下一步 , 2、选择资料来源 Microsoft Excel 97-2000,档名 选择要汇入的xls档案,按 下一步 , 3、选择目的 用于SQL Server 的Micro...
前者是资料,后者是程式,如果将资料都写程序序,效率太低了。
你的本意估计是需要将excel资料汇入sql资料库
1、在excel中编写程式码,回圈将资料写入sql资料库
2、从sql资料库中,编写程式码将excel资料汇入资料库
3、借助第三方软体,将excel资料写入sql资料库
:jingyan../article/cdddd41c92924d53cb00e189.
1、在你的excel表格中增加一列
2、在第一行的D列,就是D1中输入公式: =CONCATENATE("INSERT INTO PERSONS_SERIAL_NUMBER(PERSONS_NO, PERSONS_NAME,ID_NUMBER) VALUES('" & B1 & "', '" & C1 & "', '" & E1 & "');")
3、此时D1已经生成了如下的sql语句: INSERT INTO PERSONS_SERIAL_NUMBER(PERSONS_NO, PERSONS_NAME,ID_NUMBER) VALUES('xxxxx', 'xxxx, 'xxxxxxxxxx');
4、将D1的公式复制到所有行的D列,方法是:把资料放在单元格最右下角,当滑鼠变成十字形时,往下拖到最后一行放开就会自动复制,动态改变values里面的引数
5、此时D列已经生成了所有的sql语句
6、把D列复制到一个纯文字档案中,推荐使用UltraEdit进行处理。
SQL SERVER有一个自带的汇入汇出工具,你可以用它来把SQL SERVER的资料汇入到MYSQL。
如果无法执行的话,可以自己编写程式,将SQL SERVER的资料按照MYSQL中你建设的表的栏位标准来汇出,然后再汇入到MYSQL。
sql企业管理器里面有一个数据汇入汇出
你可以把表直接汇出excel档案的
直接复制就自动分好单元格了。 直接复制啊。 我楼下的朋友(zjgwenqi - 助理 二级)方法可行,我的方法删掉了。 ,lCXXtZ
sql
方法/步骤
很多时候我们在生产资料库上面只能进行简单的查询,是不能增删查改的。但是又想使用真实的资料。
如果用plsql develop是可以实现将资料汇出成insert语句的。但是汇出之后是全部的列都会出现在insert语句里面。
3
遇到一些空值,日期之类的还要处理一下才行,而且有很多列是自己不需要的。
4
这个时候就需要用sql来构造insert语句了。他是比较自由和灵活的,可控制性比较强。
请在日期后插入一列,如C列,在C1输入公式: =TEXT(A1,"yyyy-mm") 将日期转换为年月的文字,下拉复制; 再进行资料透视表按这年月作透视,将气温汇总除以气温计数即可得出平均值。 或请你将原表作附件上传,帮你做一下
找到由SQLServer转换的SQLite DB档案(可参考我的以前的经验:SQLServer资料库表汇出SQLite DB档案方法),
下载动软程式码生成工具并安装,按照成功后到所有程式可以检视到
执行动软程式码生成工具进入到主介面。
点选左上角的新增伺服器注册,弹出资料库型别窗体。选择SQLLite,点选下一步。如下图:
接下来会弹出选择SQLite资料库窗体,在资料库档案文字框输入本地SQLite db档案路径,点选确定(。系统会提示关闭软体从新开启。
重新开启动软程式码生成工具后,到左边伺服器可以看见那你的SQLite资料库
选择一张表,右键选择生成资料脚步(。会弹出一个提示:“如果该表资料量较大…”,直接选择“是”(,点选“是”后右边出现生成的sql语句,包含新增语句和插入资料的语句。储存档案即可。
如何把Excel资料转化成SQL语句
1、开启企业管理器,开启要汇入资料的资料库,在表上按右键,所有任务-->汇入资料,弹出DTS汇入/汇出向导,按 下一步 , 2、选择资料来源 Microsoft Excel 97-2000,档名 选择要汇入的xls档案,按 下一步 , 3、选择目的 用于SQL Server 的Micro...
前者是资料,后者是程式,如果将资料都写程序序,效率太低了。
你的本意估计是需要将excel资料汇入sql资料库
1、在excel中编写程式码,回圈将资料写入sql资料库
2、从sql资料库中,编写程式码将excel资料汇入资料库
3、借助第三方软体,将excel资料写入sql资料库
:jingyan../article/cdddd41c92924d53cb00e189.
1、在你的excel表格中增加一列
2、在第一行的D列,就是D1中输入公式: =CONCATENATE("INSERT INTO PERSONS_SERIAL_NUMBER(PERSONS_NO, PERSONS_NAME,ID_NUMBER) VALUES('" & B1 & "', '" & C1 & "', '" & E1 & "');")
3、此时D1已经生成了如下的sql语句: INSERT INTO PERSONS_SERIAL_NUMBER(PERSONS_NO, PERSONS_NAME,ID_NUMBER) VALUES('xxxxx', 'xxxx, 'xxxxxxxxxx');
4、将D1的公式复制到所有行的D列,方法是:把资料放在单元格最右下角,当滑鼠变成十字形时,往下拖到最后一行放开就会自动复制,动态改变values里面的引数
5、此时D列已经生成了所有的sql语句
6、把D列复制到一个纯文字档案中,推荐使用UltraEdit进行处理。
SQL SERVER有一个自带的汇入汇出工具,你可以用它来把SQL SERVER的资料汇入到MYSQL。
如果无法执行的话,可以自己编写程式,将SQL SERVER的资料按照MYSQL中你建设的表的栏位标准来汇出,然后再汇入到MYSQL。
sql企业管理器里面有一个数据汇入汇出
你可以把表直接汇出excel档案的
直接复制就自动分好单元格了。 直接复制啊。 我楼下的朋友(zjgwenqi - 助理 二级)方法可行,我的方法删掉了。 ,lCXXtZ
sql
方法/步骤
很多时候我们在生产资料库上面只能进行简单的查询,是不能增删查改的。但是又想使用真实的资料。
如果用plsql develop是可以实现将资料汇出成insert语句的。但是汇出之后是全部的列都会出现在insert语句里面。
3
遇到一些空值,日期之类的还要处理一下才行,而且有很多列是自己不需要的。
4
这个时候就需要用sql来构造insert语句了。他是比较自由和灵活的,可控制性比较强。
请在日期后插入一列,如C列,在C1输入公式: =TEXT(A1,"yyyy-mm") 将日期转换为年月的文字,下拉复制; 再进行资料透视表按这年月作透视,将气温汇总除以气温计数即可得出平均值。 或请你将原表作附件上传,帮你做一下
找到由SQLServer转换的SQLite DB档案(可参考我的以前的经验:SQLServer资料库表汇出SQLite DB档案方法),
下载动软程式码生成工具并安装,按照成功后到所有程式可以检视到
执行动软程式码生成工具进入到主介面。
点选左上角的新增伺服器注册,弹出资料库型别窗体。选择SQLLite,点选下一步。如下图:
接下来会弹出选择SQLite资料库窗体,在资料库档案文字框输入本地SQLite db档案路径,点选确定(。系统会提示关闭软体从新开启。
重新开启动软程式码生成工具后,到左边伺服器可以看见那你的SQLite资料库
选择一张表,右键选择生成资料脚步(。会弹出一个提示:“如果该表资料量较大…”,直接选择“是”(,点选“是”后右边出现生成的sql语句,包含新增语句和插入资料的语句。储存档案即可。
怎样用excel生成数据库update语句
1:确定需要生成的SQL语句模型。
--根据需求写一条SQL模板
update 表 set [Longitude] = '' , [Latitude] = '' where [ID]= '' and [Name] = ''
2:删除Excel表中多余的列,保留需要更新和查询条件的列。并按照需要生成的sql语句顺序进行排序。
前面两个列是需要更新的值,后面两个是where的条件字段
var cpro_psid ="u2572954"; var cpro_pswidth =966; var cpro_psheight =120;
3:在Excel表插入空列,拷贝相关的语句进去。
拷贝第一语句放入合适的单元格,把把这一列一拖到底,生成同样的语句
4:把结果拷贝到查询分析器中,使用替换把多余的空格去掉。
如果excel中想使用sql语句怎么使用
在execl中无法使用sql语句!因为excel没有内嵌sql语言,如果非想使用,那么你应该选用access而不是excel。但是在sql
server等数据库中可以使用excel,也就是将excel转成数据库。
否则,只能使用excel中自带的各种函数实现。比如你要统计一个数据范围,可以考虑使用if,如果计数的话,可以考虑使用ifcount,等等还有类似的平均值等统计函数均可以在excel中查看!
如果是对输入值有*的话,可以考虑使用vba进行宏编辑!
如果excel中想使用sql语句怎么使用
在execl中无法使用sql语句!因为excel没有内嵌sql语言,如果非想使用,那么你应该选用access而不是excel。但是在sql
server等数据库中可以使用excel,也就是将excel转成数据库。
否则,只能使用excel中自带的各种函数实现。比如你要统计一个数据范围,可以考虑使用if,如果计数的话,可以考虑使用ifcount,等等还有类似的平均值等统计函数均可以在excel中查看!
如果是对输入值有*的话,可以考虑使用vba进行宏编辑!
sqlyog可以将excel转换成sql语句吗
sqlyog可以将excel转换成sql语句。
因为通过sqlyog选择一个excel文件,后台将该excle文件转换为sql语句(sql)文件,执行该文件进而在sql数据库中创建该excle表中的数据即可,所以sqlyog可以将excel转换成sql语句。
SQLyog是一个快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库,由业界著名的Webyog公司出品。
Excel实用技巧1:动态引用某个列的值,生成SQL语句
比如JavaWeb项目,线下批量操作上百或者上千条有异常的SQL记录。如果手动一条条处理,非常容易出错。如果1.将这些异常的SQL记录导出到Excel中,2.然后使用 Excel的动态引用某个列的值 ,这项工作便会变得异常简单、优雅。
excel的公式:
注意点:
1.单元格内的公式:以等号开头,英文""起始结束;
2.动态引用某个列的值:也是英文""起始结束,&符号包裹,里面写被引用表格的位置。eg:"&A2&" 或者 "&B8&"。
截图:如下