如何把EXCEL数据导入到SQL SERVER数据库中

在我们完成一个项目开发之后,通常我们需要把客户的很多数据导入到数据库中,面对大量的数据导入工作,人工导入肯定是不现实,但是这些又是不得不完成的工作,怎么办呢?我们可以利用数据库管理工具提供的数据导入的功能即可。我们这里以SQL SERVE2008为例。SQLSERVER2008有一个“数据导入导出功能”,当然我们也可以打开数据库之后,在数据库上点击右键,然后选择“任务”,选择“导入数据”,我们就看到弹出淡入数据的对话框:


这里我们主要导入数据的源格式是EXCEL的,在excel文件中,我们通常需要整理成数据表格的形式,excel中的数据不要出现合并的单元格等,必须是和数据库表对应的一条条记录的形式。在上图中我们先选择数据源为excel,然后再选择excel文件的路径,在最下面有一个“首行包含列名称”的复选项,默认是选中的,也就是说在导入数据的时候会把excel的第一行当做数据库表的列名称,根据需要进行选择。然后选择下一步:


上图中我们主要完成选择目的数据库,按照需要选择即可。然后我们直接点击下一步,指导出现下面的画面:


这就会打开excel文件的工作薄,我们选择一个工作簿(sheet),如果我们的excel中的数据列和数据库表中的列不是对应,则需要进行调整,上图中先选中一个“源”,然后再选择这个源对应的“目标”,此时按钮“编辑映射”处于可用状态,我们点击这个按钮,出现下图:


在上图中有“删除目标表中的行”和“向目标表中追加行”的单选选项,他们的意思说的很明白,不解释(哈哈).在虾米那的表格中,我们重点关注的是“源”和“目标”列,源指的是excel中的列,这一列通常是不能选择的,我们主要选择的是“目标”列,在这一列就是完成excel的一列行数据库表中的某一个字段进行对应。按照我们的需要进行对应之后,点击确定,下一步等等,直接到最后一步,中间出现的警告都不用去理会,完成之后,可能出现错误提示,这个提示不是很准确的,有时候虽然出错但是数据仍然导入到数据库了,因此我们查看一下数据库是否导入进去,如果没有导入进去,我们看看错误提示,有可能出现的错误时字段不对应,还有外键关系等等,相应的修改一下即可。

其实上面导入数据个过程尤其是在最后选择“源”和“目标”对应的时候,经常会出现字段的类型不一致的问题,从而导致数据导入不进去,我们可以先把数据直接导入数据库中,生产一个新的数据表,然后在数据库的控制台,利用insert 语句完成数据的导入。

有时候用户的需求发生变化,数据库表的字段增加了,此时数据量有又大的情况下,我们也不会手动输入数据的,直接导入数据的可能改变我们数据库原有的数据,尤其是数据库表存在主键字段(通常都有的),这个字段还是自增的,同时这个主键字段还是其他表的外键字段,那么直接导入就会造成外键字段的值也要进行对应的修改,总的来说就是工作量很大,很复杂。我们怎么能够在不破坏原有的数据情况下,同时又给新增加的字段导入数据呢?

我们先对应的数据库表导出为excel文件。在控制台输入“select * from ####”,然后在输出部分,点击右键选择将“标题和数据一块复制”,然后选择另存为,存储为“*.csv”格式的,再用excel打开。

打开excel之后,给excel表添加相应的字段,保存之后,重新导入到数据库中,但是此时我们导入数据库时目标数据库表的选择不是已经存在的数据库,我们这里不选择,按照默认的设置即可。一路“下一步”就完成导入工作,在数据库中我们将会发现一个自动生成的表,“sheet1”等类似的名称。

然后在控制台利用update语句完成数据的导入或更新:


update A set x1=B.x1,x2=B.x2 from A,B where A.id=B.id


在实际的项目中,我们根据需要进行选择,最重要的工作还是在excel中数据的整理,我们可以利用excel提供的各种快捷方法整理,避免我们手工进行大量重复复杂的工作。

(结束)


  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个将excel文件导入SQLServer表中的程序 一 双击Input.exe运行程序,将弹出一个窗口,这时请你在"数据库名"后面的 输入栏输入数据库名(如果是千方百剂就是输入帐套名).你如果没对数 据库的登录进行特殊修改的话,那"用户名和密码"就没必要修改了. 二 填好以上输入框后,真接单击"连接数据库",如果连接成功,将弹出"数据库 连接成功,你现在可以导入数据"的对话框,你按"OK"后将弹出新的一个数据 导入的窗口. 三 在这个窗口上单击"打开EXCEL文件"按钮,然后选择你要导入Excel文件, 按打开(这时如果你数据比较多的话你可能要多等一会儿时间),之后就弹 出一个让你选择Excel工作区的窗口,你可以在下拉框选择你数据所在的 Excel工作区了.选完以后按确定,你可以看到你Excel里的数据已经在"Excel 数据信息"里面了.而且还可以看到多了一列"不导入"的选项了.你如果哪一行 的数据导入的话你可以打勾,这一行将不被导入. 四 做完以上三步后,请在"表名"后面的下拉框选择你所要导入的表的名称. 选完后,你得到"数据转换信息如下"这一栏配置数据转换的对应关系. 五 双击Excel字段处从下拉框选择excel的列,双击表字段处从下拉框选 择SQL表的列,然后看这列是否是"关键字",是的话打勾,不是不打勾.选择 完第一行后,就按方向键的向下键,继续第二行的选择,直到配置完Excel列 和表字段的对应关系为止. 六 按"导入数据"按钮系统会自动将页面转到"转换信息"这一页面.你将可以看 到第几行导入成功,或第几行导入失改的信息.
以下是C# WinFormExcel数据导入SQL Server数据库的步骤: 1. 需要添加对Microsoft.Office.Interop.Excel和System.Data.SqlClient的引用。 2. 建立一个Windows Form应用程序,并在表单上添加一个按钮,用于触发导入Excel数据的过程。 3. 在按钮的Click事件编写代码,打开Excel文件并读取数据。 ```csharp using Excel = Microsoft.Office.Interop.Excel; Excel.Application excelApp = new Excel.Application(); Excel.Workbook workbook = excelApp.Workbooks.Open(@"C:\example.xlsx"); Excel.Worksheet worksheet = workbook.Sheets[1]; int rowsCount = worksheet.UsedRange.Rows.Count; int columnsCount = worksheet.UsedRange.Columns.Count; for (int row = 1; row <= rowsCount; row++) { for (int col = 1; col <= columnsCount; col++) { string cellValue = (worksheet.Cells[row, col] as Excel.Range).Value.ToString(); // Do something with the cell value } } workbook.Close(); excelApp.Quit(); ``` 4. 创建一个SqlConnection对象,用于连接到SQL Server数据库。 ```csharp using System.Data.SqlClient; SqlConnection connection = new SqlConnection("Data Source=serverName;Initial Catalog=databaseName;Integrated Security=True"); connection.Open(); ``` 5. 创建一个SqlCommand对象,用于执行插入语句。 ```csharp SqlCommand command = new SqlCommand("INSERT INTO TableName (Column1, Column2) VALUES (@Value1, @Value2)", connection); command.Parameters.AddWithValue("@Value1", cellValue1); command.Parameters.AddWithValue("@Value2", cellValue2); command.ExecuteNonQuery(); ``` 6. 在循环使用SqlCommand对象插入数据。 7. 关闭SqlConnection对象。 ```csharp connection.Close(); ``` 完成以上步骤后,您的C# WinForm应用程序就能够将Excel数据导入SQL Server数据库了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值