一: 在本地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
❷ sql如何导入excel数据到数据库中并建立新表
这个要看连接数据库的客户端是否支持Excel导入,如果不支持,那么就要将其转换为insert语句,执行之前按字段create table。
❸ 在excel中建立sql索引
建立索引的语法格式如下:CREATE (UNIQUEI[CLUSTER)INDEX<索引名>ON table I view(<列名>[<次序>】L<列名>t<次序>]I ")其中的元素说明如下:table! view要建立素引的基本表或者视图的名字。列名要建立索引的列的名字。索引可以建立在该基本表的一列或者多列上,各个列名用逗号分陇。次序指定索引值的排列次序,可以用升序〔ASC)或者降序(DESC),系统软认值为升序。UNIQUE表明每一个索引值只对应唯一的数据。CLUSTER表明要建立的索引是簇索引。下面将举一个例子来具体说明,代码如下:CREATE UNIQUE CLUSTER INDEX Idxl ON Employee (EmployeeNo)该例将在Employee的EmployeeNo3J上建立一个唯一簇索引,并且Employee的表中的记录将按照Er叩loyceNc值的升序排列.下面代码将在多个列上建立索引:CREATE UNIQUE CLUSTER INDEX Idxl ON Employee(EmployeeNo,Empename)建立索引时有以下几点需要考虑:只有表或视图的所有者才能为表创建索引。每个表中只能创建一个簇索引。对于经常更新的列不宜建立簇索引。索引名在表或视图中必须唯一,但在数据库中不必难一。
❹ 如何把Excel数据转化成SQL语句
1、例如我想把图1的数据给添加到图2的数据库中;
❺ C#中怎么用窗体读取EXCEL表格并循环判断表中每个字段在SQL里创建对应表
/// <summary>
/// 指定的Excel文件名
/// </summary>
private string strFileName;
//是否已经获取到Excel文件的路径
private bool hasFile;
//是否已经把Excel读取到Datase中
private bool hasContent;
//从Excel中读取到内容
private DataSet dsExcel;
#region 将Excel的数据转化为DataTable
/// <summary>
/// 将Excel的数据转化为DataTable
/// </summary>
public void ShowExcelContent()
{
//下面是Excel数据库访问操作:
//连接字符串
string strCon = @"Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '" + strFileName + "';Extended Properties=Excel 8.0";
//要执行的sql语句
string strSql = "select * from [1号裱糊机$]";
//创建OleDb连接对象
OleDbConnection oleDbCon = new OleDbConnection(strCon);
//创建OleDbDataAdapter
OleDbDataAdapter oleDbDa = new OleDbDataAdapter(strSql, oleDbCon);
//实例化ds
dsExcel = new DataSet();
//打开连接
oleDbCon.Open();
//从数据库读取内容并填充到ds中
oleDbDa.Fill(dsExcel, "Info");
//关闭连接
oleDbCon.Close();
//绑定数据源
//bindingSource1.DataSource = dsExcel.Tables[0];
////下面该句是bindingNavigator的数据绑定方法,但用该语句会提示错误为:bindingNavigator为只读。所以,只能在属性栏里的BindingSoure属性里修改
////bindingNavigator1.DataBindings = bindingSource1;
////显示到DataGridView
//dataGridView1.DataSource = bindingSource1;
//标记ds有内容
hasContent = true;
}
#endregion
/// <summary>
/// 选择Excel文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bntFindFile_Click(object sender, EventArgs e)
{
//文件选择对话框
OpenFileDialog FilePath = new OpenFileDialog();
//判断是否选择好文件
if (FilePath.ShowDialog() == DialogResult.OK)
{
hasFile = true;
strFileName = FilePath.FileName;
tbFileName.Text = strFileName;
}
}
/// <summary>
/// 显示Excel内容到DatagridView
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bntShowExcel_Click(object sender, EventArgs e)
{
//判断是否已经选择好文件
if (hasFile)
{
//显示Excel内容到DatagridView
ShowExcelContent();
}
}
然后在循环dsExcel获取每个字段的字段名。
然后后执行创建对应表的结构,
❻ 请问excel怎么转换成sql
1、把Excel通过DTS包导入到数据库中,再通过软件生成Sql脚本(另存为sql)。
2、通过Excel中的公式来生成Sql语句。
可以借助很多其它工具,数据库查询工具,UE等。
❼ excel文件怎么生成sql语句
这个方法有很多吧.ACCESS本身就支持SQL的.EXCEL与ACCESS之间又是可以转换.
还有用数据源的方法.
还有PLSQL中可以建立数据源再指定EXCEL文件可行.
方法有很多种的.
❽ 怎样把excel做成的表导入sql数据库中
手动方式:SQLSERVER--企业管理器--数据库--所有任务--导入导出数据
优点:操作简单;缺点:很多EXCEL标识不一定能存入数据库
自动方式:编写个小程序即可实现
优点:可以完全按照自己的意思将数据导入导出数据;缺点:需要程序员编写小程序
❾ excel2010怎样生成sql语句
自己写吧,很简单的
Set conn = CreateObject("adodb.connection")
conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
Sql = "select top 3 * from [sheet1$A2:D]"
[H3].CopyFromRecordset conn.Execute(Sql)
conn.Close: Set conn = Nothing