怎么把excel文件里的数据导入SQL数据库?

怎么把excel文件里的数据导入SQL数据库?,第1张

导入数据不一定要用OPENSET函数,可以用更简单的方法,步骤如下:

1、首先双击打开sqlserver,右击需要导入数据的数据库,如图所示。

2、点击任务,再点击任务中的导入数据选项,打开导入导出数据向导界面。

3、在向导界面点击下一步,进入下图界面依次填写需要的内容:数据源Excel,文件路径,以及Excel版本,填好后点击下一步(如果Excel其他版本不行的话,就选择Excel97-03的,再将Excel保存为相应版本)即可。

4、然后就是目标数据库设置:目标选择msslserver,服务器名称不用变,身份验证输入相应的密码,数据库选择对应的数据库,设置好后点击下一步。

5、然后来到图示界面,直接默认选项即可,点击下一步。

6、图示界面,可以自定义目标数据库(表在数据库中可以不存在),点击预览即可以看到导入之后的表状态,如图。

7、上一步完成后再继续下一步,最后点击完成,即可导入成功,如图。

8、最后在数据库中检查一下导入的表数据,附上导入的Excel数据为例。

扩展资料:

导入数据也可使用OPENROWSET函数,但使用该函数之前必须先启用AdHocDistributedQueries服务,因为这个服务不安全所以SqlServer默认是关闭的,系统管理员可以通过使用sp_configure启用'AdHocDistributedQueries'。

但有一个问题一定要特别注意,由于 'AdHocDistributedQueries'这个服务存在着较大的安全隐患,所以切记使用完毕之后一定要关闭。

所以,如果是导入数据建议不要使用OPENROWSET函数,弊大于利。

在 Excel 中录入好数据以后,可能会有导入数据库的需求,这个时候就需要利用一些技巧导入。接下来是我为大家带来的如何将excel表导入数据库的 方法 ,希望对你有用。

将excel表导入数据库的方法

Excel导入数据库步骤1:对于把大量数据存放到数据库中,最好是用图形化数据库管理工具,可是如果没有了工具,只能执行命令的话这会是很费时间的事。那我们只能对数据进行组合,把数据组成insert语句然后在命令行中批量直行即可。

Excel导入数据库步骤2:我们对下面数据进行组合,这用到excel中的一个功能。

在excel中有个fx的输入框,在这里把组好的字符串填上去就好了。

注:字符串1 &A2 &字符串2 &...

A2可以直接输入,也可以用鼠标点对应的单元格。

Excel导入数据库步骤3:每个字符串之间用 &符号进行连接。下面是第一条连接字符串

="insert into tavern values('"&A2&"','"&B2&"','"&C2&"','"&D2&"')"

写好后按回车键Enter就能组合出对应的字符串了。

insert into tavern values('jw_agi','曙光','0','1')

Excel导入数据库步骤4:组好第一行的字符串后,把鼠标放到单元格右下方,出现加粗的十字,单击按下(别松开),一直往下拉,直到最后一行再放开就行了。

5这样我们就把insert语句都整理好了,接下来就是大家把这些语句批量执行就可以了。

>>>下一页更多精彩“将EXCEL表格数据导入进CAD中的方法”

1.本文实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现。不但速度快,而且代码简单,下面测试代码导入一个6万多条数据的sheet,包括读取(全部读取比较慢)在我的开发环境中只需要10秒左右,而真正的导入过程只需要4.5秒。\x0d\x0a2.代码如下:\x0d\x0ausing System \x0d\x0ausing System.Data \x0d\x0ausing System.Windows.Forms \x0d\x0ausing System.Data.OleDb \x0d\x0anamespace WindowsApplication2 \x0d\x0a{ \x0d\x0apublic partial class Form1 : Form \x0d\x0a{ \x0d\x0apublic Form1() \x0d\x0a{ \x0d\x0aInitializeComponent() \x0d\x0a} \x0d\x0a\x0d\x0aprivate void button1_Click(object sender, EventArgs e) \x0d\x0a{ \x0d\x0a//测试,将excel中的sheet1导入到sqlserver中 \x0d\x0astring connString = "server=localhostuid=sapwd=sqlgisdatabase=master" \x0d\x0aSystem.Windows.Forms.OpenFileDialog fd = new OpenFileDialog() \x0d\x0aif (fd.ShowDialog() == DialogResult.OK) \x0d\x0a{ \x0d\x0aTransferData(fd.FileName, "sheet1", connString) \x0d\x0a} \x0d\x0a} \x0d\x0a\x0d\x0apublic void TransferData(string excelFile, string sheetName, string connectionString) \x0d\x0a{ \x0d\x0aDataSet ds = new DataSet() \x0d\x0atry\x0d\x0a{ \x0d\x0a//获取全部数据 \x0d\x0astring strConn = "Provider=Microsoft.Jet.OLEDB.4.0" + "Data Source=" + excelFile + "" + "Extended Properties=Excel 8.0" \x0d\x0aOleDbConnection conn = new OleDbConnection(strConn) \x0d\x0aconn.Open() \x0d\x0astring strExcel = "" \x0d\x0aOleDbDataAdapter myCommand = null \x0d\x0astrExcel = string.Format("select * from [{0}$]", sheetName) \x0d\x0amyCommand = new OleDbDataAdapter(strExcel, strConn) \x0d\x0amyCommand.Fill(ds, sheetName) \x0d\x0a\x0d\x0a//如果目标表不存在则创建 \x0d\x0astring strSql = string.Format("if object_id('{0}') is null create table {0}(", sheetName) \x0d\x0aforeach (System.Data.DataColumn c in ds.Tables[0].Columns) \x0d\x0a{ \x0d\x0astrSql += string.Format("[{0}] varchar(255),", c.ColumnName) \x0d\x0a} \x0d\x0astrSql = strSql.Trim(',') + ")" \x0d\x0a\x0d\x0ausing (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection(connectionString)) \x0d\x0a{ \x0d\x0asqlconn.Open() \x0d\x0aSystem.Data.SqlClient.SqlCommand command = sqlconn.CreateCommand() \x0d\x0acommand.CommandText = strSql \x0d\x0acommand.ExecuteNonQuery() \x0d\x0asqlconn.Close() \x0d\x0a} \x0d\x0a//用bcp导入数据 \x0d\x0ausing (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString)) \x0d\x0a{ \x0d\x0abcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied) \x0d\x0abcp.BatchSize = 100//每次传输的行数 \x0d\x0abcp.NotifyAfter = 100//进度提示的行数 \x0d\x0abcp.DestinationTableName = sheetName//目标表 \x0d\x0abcp.WriteToServer(ds.Tables[0]) \x0d\x0a} \x0d\x0a} \x0d\x0acatch (Exception ex) \x0d\x0a{ \x0d\x0aSystem.Windows.Forms.MessageBox.Show(ex.Message) \x0d\x0a}\x0d\x0a} \x0d\x0a\x0d\x0a//进度显示 \x0d\x0avoid bcp_SqlRowsCopied(object sender, System.Data.SqlClient.SqlRowsCopiedEventArgs e) \x0d\x0a{ \x0d\x0athis.Text = e.RowsCopied.ToString() \x0d\x0athis.Update() \x0d\x0a}\x0d\x0a} \x0d\x0a} \x0d\x0a3.上面的TransferData基本可以直接使用,如果要考虑周全的话,可以用oledb来获取excel的表结构,并且加入ColumnMappings来设置对照字段,这样效果就完全可以做到和sqlserver的dts相同的效果了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10818914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存