C#中如何将Excel中的数据批量导入到sql server

C#中如何将Excel中的数据批量导入到sql server,第1张

代码如下:
using System;
using SystemData;
using SystemWindowsForms;
using SystemDataOleDb;
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";
SystemWindowsFormsOpenFileDialog fd = new OpenFileDialog();
if (fdShowDialog() == DialogResultOK)
{
TransferData(fdFileName, "sheet1", connString);
}
}
public void TransferData(string excelFile, string sheetName, string connectionString)
{
DataSet ds = new DataSet();
try
{
//获取全部数据
string strConn = "Provider=MicrosoftJetOLEDB40;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 80;";
OleDbConnection conn = new OleDbConnection(strConn);
connOpen();
string strExcel = "";
OleDbDataAdapter myCommand = null;
strExcel = stringFormat("select from [{0}$]", sheetName);
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommandFill(ds, sheetName);
//如果目标表不存在则创建
string strSql = stringFormat("if object_id('{0}') is null create table {0}(", sheetName);
foreach (SystemDataDataColumn c in dsTables[0]Columns)
{
strSql += stringFormat("[{0}] varchar(255),", cColumnName);
}
strSql = strSqlTrim(',') + ")";
using (SystemDataSqlClientSqlConnection sqlconn = new SystemDataSqlClientSqlConnection(connectionString))
{
sqlconnOpen();
SystemDataSqlClientSqlCommand command = sqlconnCreateCommand();
commandCommandText = strSql;
commandExecuteNonQuery();
sqlconnClose();
}
//用bcp导入数据
using (SystemDataSqlClientSqlBulkCopy bcp = new SystemDataSqlClientSqlBulkCopy(connectionString))
{
bcpSqlRowsCopied += new SystemDataSqlClientSqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
bcpBatchSize = 100;//每次传输的行数
bcpNotifyAfter = 100;//进度提示的行数
bcpDestinationTableName = sheetName;//目标表
bcpWriteToServer(dsTables[0]);
}
}
catch (Exception ex)
{
SystemWindowsFormsMessageBoxShow(exMessage);
}
}
//进度显示
void bcp_SqlRowsCopied(object sender, SystemDataSqlClientSqlRowsCopiedEventArgs e)
{
thisText = eRowsCopiedToString();
thisUpdate();
}
}
}
3上面的TransferData基本可以直接使用,如果要考虑周全的话,可以用oledb来获取excel的表结构,并且加入ColumnMappings来设置对照字段,这样效果就完全可以做到和sqlserver的dts相同的效果了。
SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。
Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。

第一步,打开导入导出工具。(win7 32位系统下SQL自带,64位系统下好像要装)
第二步,选择源文件的格式。这里txt格式文件选择平面文件源。
第三步,浏览选择文件源,其中代码页要改成简体中文。另外在列中可查看导入的数据列是否正确,在高级中可编辑字段名。
第四步,选择目标服务器和数据库。就是确定数据文件要导入到哪一个一个服务器的哪一个数据库中。
第五步,选择目标表,打开编辑映射。默认时以文件名建立新表。
第六步,编辑映射。把数据对应导入数据库各字段中!若是目标表是新建的,那么要编辑数据库中的个字段名以及数据类型。
那么做完这些后只要数据源没有问题,单击下一步……就可以搞定了。

1、首先我们打开SQL Server 2012资源管理器,在已创建好的数据库表t_call_info,查询和比较表记录。

2、利用SQL Server 2012数据库资源管理器,创建删除SQL语句,使用delete。

3、删除ID为10的记录,利用delete from 数据库表 where id=10。

4、删除记录后,再次查询数据库表,这时ID为10的记录不存在。

5、删除ID从5到8的记录,利用betweenand。

6、批量删除数据库表记录,再次查询数据库表,这时删掉了几条数据。


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

原文地址: http://outofmemory.cn/zz/10880487.html

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

发表评论

登录后才能评论

评论列表(0条)

保存