一: 在本地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