当前位置:首页 » 编程语言 » 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相同的效果了。