當前位置:首頁 » 編程語言 » cexcel導入到sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

cexcel導入到sql

發布時間: 2022-03-06 04:27:19

❶ 如何將Excel表格中的數據導入到sql資料庫里已經存在的表裡,注意是已經建好的

一樓回答的很詳細,還有一點要注意,就是導入的EXCEL表要在本地,也就是表要在SQL伺服器上的才能導入,不然會提示錯誤

❷ 如何實現把Excel 中的數據導入到SQL Server資料庫的指定表中

在查詢分析器里,直接寫
SQL語句:
如果是導入數據到現有表,則採用
INSERT
INTO

SELECT
*
FROM
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel
5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
的形式
如果是導入數據並新增表,則採用
SELECT
*
INTO

FROM
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel
5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
的形式。
以上語句是將
EXCEL文件里
SHEET1工作表中所有的列都讀進來,如果只想導部分列,可以
INSERT
INTO

(a1,a2,a3)
SELECT
a1,a2,a3
FROM
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel
5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
其實可以將
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel
5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)當成一個表,例如我就寫過這樣一個句子:
INSERT
INTO
eval_channel_employee(channel,employee_id)
SELECT
CASE
a.渠道
WHEN
'DIY'
THEN
1
WHEN
'RDC'
THEN
0
WHEN
'KCM'
THEN
2
ELSE
3
END
,b.id
FROM
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel
5.0;HDR=YES;DATABASE=c:\temp\name.xls',sheet1$)
AS
a,pers_employee
b
WHERE
a.員工編碼
=b.code
簡單的方法:
SQL2005中直接可以實現導入功能
SQL2008不知道可不可以。
操作過程如下:
第一步:登錄到
SQL
Server
Management
Studio,
第二步:在
「對象資源管理器
」中右鍵單擊
「管理
」,在彈出列表中單擊
「導入數據

第三步:在
「導入向導
」對話框中單擊
「下一步
」,進入到
「選擇數據源
」對話框,在
「數據源
」列表中選擇
「Microsoft
Excel
」,同時選擇相應的
Excel
文檔,完成後單擊
「下一步
」(一定要勾選該對話框中的
「首行包含列名稱
」,因此它是將
Excel文檔中的列標題為資料庫表中的列項標題)
第四步:指定目標資料庫服務,依次單擊
「下一步
」。。。。至到
「完成

第五步:重新打到
SQL
Server
Management
Studio,進入到導入的資料庫表,可以發現所導入的
Excel文檔數據。
你試下下面的吧:
打開SQL
Server
Configuration
Manager,啟用SQL
Server
Agent(實例名)。
啟動模式更改為「自動」

❸ c #讀取excel到sql

你仔細參考一下:
string path = Server.MapPath(@"~\HR\UpLoadName\");
string file_in = this.FileUpload_In.FileName.ToString();
//string type = FileUpload_In.FileName.Split('.')[1].ToString();

if (!Directory.Exists(path))//如果不存在這個文件夾,則創建它
{
Directory.CreateDirectory(path);
}
if (file_in == "")
{
ScriptManager.RegisterStartupScript(this, Page.GetType(), "", "alert('請選擇要上傳的Excel表!');", true);
}

else if (FileUpload_In.FileName.Split('.')[1].ToString().Trim() != "xls")
{
ScriptManager.RegisterStartupScript(this, Page.GetType(), "", "alert('只能導入Excel表格!');", true);
}
else
{

FileInfo fi = new FileInfo(path + file_in);
if (fi.Exists)
{
fi.Delete();
FileUpload_In.SaveAs(path + file_in);
}
else
{
FileUpload_In.SaveAs(path + file_in);
}

string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;data source=" + fi;
string sql = "SELECT * FROM [Sheet1$]";
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(sql, connStr);
da.Fill(ds);
DataTable dt = ds.Tables[0];
string Dept, Position, Id, Name, Sex, InDate, Tel, Team, Remark, Yes;
for (int a = 0; a < dt.Rows.Count; a++)
{
//部門,職位, 工號, 姓名,性別,入職日期,分機號, 組別,備注, 標識
Dept = dt.Rows[a][0].ToString();
Position = dt.Rows[a][1].ToString();
Id = dt.Rows[a][2].ToString();
Name = dt.Rows[a][3].ToString();
Sex = dt.Rows[a][4].ToString();
InDate = Convert.ToDateTime(dt.Rows[a][5].ToString()).ToString("yyyy-MM-dd");
Tel = dt.Rows[a][6].ToString();
Team = dt.Rows[a][7].ToString();
Remark = dt.Rows[a][8].ToString();
Yes = dt.Rows[a][9].ToString();

string str_insert = "INSERT INTO Emp_In VALUES('" + Dept + "','" + Position + "','" + Id + "','" + Name + "','" + Sex + "','" + InDate + "','" + Tel + "','" + Team + "','" + Remark + "','" + Yes + "')";
SqlCommand scd = new SqlCommand(str_insert, Conn);
scd.Connection.Open();
try
{
scd.ExecuteNonQuery();
ScriptManager.RegisterStartupScript(this, Page.GetType(), "", "alert('上傳成功!');", true);
}
catch
{
ScriptManager.RegisterStartupScript(this, Page.GetType(), "", "alert('上傳失敗!');", true);
}
finally
{
scd.Connection.Close();
}
}

}

❹ excel不能導入到sql server 怎麼辦

sqlserver2005中,導入導出數據是通過sql
server
2005
integration
services
(ssis)實現的,那麼可以在sql
2005的安裝目錄下找到dtswizard.exe,例如我的是在c:\program
files\microsoft
sql
server\90\dts\binn,在該目錄下找到dtswizard.exe,然後在命令提示符窗口中運行dtswizard.exe,這時候就可以看到導入導出數據的向導了。
接下來就可以進行導入導出操作了。

❺ 如何將數據從 Excel 導入到 SQL Server

使用sqlserver的導入功能。
sqlserver2008系統,登錄ssms,在資料庫上右健,任務-->導入,可以打開導入的引導界面。

如果只是一個表的數據,也可以在excel上復制數據,然後在ssms里打開表,粘貼數據。

❻ 怎麼寫sql語句將Excel的數據插入到SQL Server資料庫

方法和詳細的操作步驟如下:

1、第一步,准備Excel表,並希望將其導入SQL
Server 2012中的QearlTest資料庫,見下圖,轉到下面的步驟。

❼ 如何將Excel數據批量導入SQL資料庫

把EXCEL數據導入到SQL資料庫中:

1、在資料庫上點擊右鍵,然後選擇「任務」,選擇「導入數據」,就看到彈出淡入數據的對話框


3、按照操作步驟走下去,最終會生成一個新的表(臨時表B表)。

可以藉助工具,MSSQL表數據導出成Insert語句的工具 即:將查詢出來的這些數據都生成insert into語句。

最終在A表中執行該insert into語句就可以將excel中的數據最終放入資料庫中。

❽ 如何在DELPHI中將EXCEL中的數據導入到SQL資料庫

var
s1:string;
begin
screen.Cursor:=crSQLWait;
s1:='insert into table_bus '+
' (BS_NO,BS_TYPE,bs_whos,bs_mode,bs_seat,bs_soalseat,bs_drseat,bs_oiltype,bs_buycard,bs_unit,BS_BDATE,bs_edate) '+
' SELECT 車號,dbo.uf_GetFullNameCode(車型名稱),dbo.uf_GetFullNameCode(所屬單位),dbo.uf_GetFullNameCode(廠牌型號),核定座位,售票座位,駕駛室前排座位,dbo.uf_GetFullNameCode(燃料名稱),購置證號,本外單位,啟用日期,dbo.uf_ConvertNullDate(終止時間) '+
' FROM OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source="'+trim(LabeledEdit1.text)+'";Extended Properties=Excel 8.0;Persist Security Info=False'')...[Sheet1$] '+
' where 車號 not in(select bs_no from table_bus) ';
try
DataMole1.ADOConnection1.Execute(s1);
finally
screen.Cursor:=crArrow;
end;
end;
EXCEL是可以當成一種數據源來處理的。 Str := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + 文件路徑 +
';Extended Properties=Excel 8.0;Persist Security Info=False';
然後每列相當於一欄位?

熟悉SQL SERVER 2000的資料庫管理員都知道,其DTS可以進行數據的導入導出,其實,我們也可以使用Transact-SQL語句進行導入導出操作。在Transact-SQL語句中,我們主要使用OpenDataSource函數、OPENROWSET 函數,關於函數的詳細說明,請參考SQL聯機幫助。利用下述方法,可以十分容易地實現SQL SERVER、ACCESS、EXCEL數據轉換,詳細說明如下:
一、SQL SERVER 和ACCESS的數據導入導出
常規的數據導入導出:
使用DTS向導遷移你的Access數據到SQL Server,你可以使用這些步驟:
○1在SQL SERVER企業管理器中的Tools(工具)菜單上,選擇Data Transformation
○2Services(數據轉換服務),然後選擇 czdImport Data(導入數據)。
○3在Choose a Data Source(選擇數據源)對話框中選擇Microsoft Access as the Source,然後鍵入你的.mdb資料庫(.mdb文件擴展名)的文件名或通過瀏覽尋找該文件。
○4在Choose a Destination(選擇目標)對話框中,選擇Microsoft OLE DB Prov ider for SQL Server,選擇資料庫伺服器,然後單擊必要的驗證方式。
○5在Specify Table Copy(指定表格復制)或Query(查詢)對話框中,單擊Copy tables(復製表格)。
○6在Select Source Tables(選擇源表格)對話框中,單擊Select All(全部選定)。下一步,完成。
Transact-SQL語句進行導入導出:
1.在SQL SERVER里查詢access數據:
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名
2.將access導入SQL server
在SQL SERVER 里運行:
SELECT *
INTO newtable
FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名
3.將SQL SERVER表裡的數據插入到Access表中
在SQL SERVER 里運行:
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名
(列名1,列名2)
select 列名1,列名2 from sql表
實例:
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\db.mdb';'admin';'', Test)
select id,name from Test

INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)
SELECT *
FROM sqltablename
二、SQL SERVER 和EXCEL的數據導入導出
1、在SQL SERVER里查詢Excel數據:
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
下面是個查詢的示例,它通過用於 Jet 的 OLE DB 提供程序查詢 Excel 電子表格。
SELECT *
FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
2、將Excel的數據導入SQL server :
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
實例:
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
3、將SQL SERVER中查詢到的數據導成一個Excel文件
T-SQL代碼:
EXEC master..xp_cmdshell 'bcp 庫名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
參數:S 是SQL伺服器名;U是用戶;P是密碼
說明:還可以導出文本文件等多種格式
實例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
在VB6中應用ADO導出EXCEL文件代碼:
Dim cn As New ADODB.Connection
cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 庫名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"

4、在SQL SERVER里往Excel插入數據:
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)
T-SQL代碼:
INSERT INTO
OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',
'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]
(bestand, prokt) VALUES (20, 'Test')
總結:利用以上語句,我們可以方便地將SQL SERVER、ACCESS和EXCEL電子表格軟體中的數據進行轉換,為我們提供了極大方便!

方法2:
procere TForm1.Button3Click(Sender: TObject);
var
oe:variant;
n1,str:string;
j:integer;
begin
if opendialog1.Execute then
opendialog1.DefaultExt:='xls';
str:=opendialog

❾ C#中如何將Excel中的數據批量導入到sql server

1.本文實現在c#中可高效的將excel數據導入到sqlserver資料庫中,很多人通過循環來拼接sql,這樣做不但容易出錯而且效率低下,最好的辦法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 類來實現。不但速度快,而且代碼簡單,下面測試代碼導入一個6萬多條數據的sheet,包括讀取(全部讀取比較慢)在我的開發環境中只需要10秒左右,而真正的導入過程只需要4.5秒。
2.代碼如下:
using System;
using System.Data;
using System.Windows.Forms;
using System.Data.OleDb;
namespace WindowsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
//測試,將excel中的sheet1導入到sqlserver中
string connString = "server=localhost;uid=sa;pwd=sqlgis;database=master";
System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog();
if (fd.ShowDialog() == DialogResult.OK)
{
TransferData(fd.FileName, "sheet1", connString);
}
}

public void TransferData(string excelFile, string sheetName, string connectionString)
{
DataSet ds = new DataSet();
try
{
//獲取全部數據
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
strExcel = string.Format("select * from [{0}$]", sheetName);
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(ds, sheetName);

//如果目標表不存在則創建
string strSql = string.Format("if object_id('{0}') is null create table {0}(", sheetName);
foreach (System.Data.DataColumn c in ds.Tables[0].Columns)
{
strSql += string.Format("[{0}] varchar(255),", c.ColumnName);
}
strSql = strSql.Trim(',') + ")";

using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection(connectionString))
{
sqlconn.Open();
System.Data.SqlClient.SqlCommand command = sqlconn.CreateCommand();
command.CommandText = strSql;
command.ExecuteNonQuery();
sqlconn.Close();
}
//用bcp導入數據
using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString))
{
bcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
bcp.BatchSize = 100;//每次傳輸的行數
bcp.NotifyAfter = 100;//進度提示的行數
bcp.DestinationTableName = sheetName;//目標表
bcp.WriteToServer(ds.Tables[0]);
}
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}

//進度顯示
void bcp_SqlRowsCopied(object sender, System.Data.SqlClient.SqlRowsCopiedEventArgs e)
{
this.Text = e.RowsCopied.ToString();
this.Update();
}
}
}
3.上面的TransferData基本可以直接使用,如果要考慮周全的話,可以用oledb來獲取excel的表結構,並且加入ColumnMappings來設置對照欄位,這樣效果就完全可以做到和sqlserver的dts相同的效果了。