代码如下:
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 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。
ASPNET中将Excel表中的数据导入到数据库中的方法是利用可视化界面工具直接选择字段映射导入。
1)接受数据导入的表已经存在。
insert into t1 select from OPENROWSET('MICROSOFTJETOLEDB40' ,
'Excel 50;HDR=YES;DATABASE=c:\\testxls',sheet1$);
2)导入数据并生成表。
select into t1 from OPENROWSET('MICROSOFTJETOLEDB40',
'Excel 50;HDR=YES;DATABASE=c:\\testxls',sheet1$);
3) 导入Excel中指定的列到数据库表中指定的列。
INSERT INTO t1(a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET'MICROSOFTJETOLEDB40' ,'Excel50; HDR=YES; DATABASE=c:\\testxls',sheet1$);
需要注意的地方。
1)外围应用配置器的设置。
从“功能外围应用配置器”中选择“启动 OPENROWSET 和 OPENDATASOURCE 支持”选项。
2)关闭Excel表。
如果在导入时要导入的Excel表格处于打开状态,会提示:
“无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "microsoftjetoledb40" 的数据源对象。”
3)导入数据时,Excel的首行会作为表头,若导入到已存在的数据库表,则忽略首行。
一、使用工具:Oracle、SQLLoader、PLSQL Developer、Sql Server 2000。
二、导入方法:有三种导入方法,分别是:
1、方法一:使用SQLLoader:这个是用的较多的方法,前提必须oracle数据中目的表已经存在。大体步骤如下:
a、将excel文件另存为一个新文件比如文件名为texttxt,文件类型选文本文件(制表符分隔),这里选择类型为csv(逗号分隔)也行,但是在写后面的controlctl时要将字段终止符改为','(fields
terminated by ','),假设保存到c盘根目录。
b
、如果没有存在的表结构,则创建,假设表为test,有两列为dm,ms。
c、用记事本创建SQLLoader控制文件,网上说的文件名后缀为ctl,其实就用txt后缀也行。比如命名为controlctl,内容如下:(--后面的为注释,实际不需要)
备注:数据导入的方式上例中用的append,有以下几种:insert,为缺省方式,在数据装载开始时要求表为空;append,在表中追加新记录;replace,删除旧记录,替换成新装载的记录;truncate,同replace。
d、在命令行提示符下使用SQLLoader命令实现数据的输入。
sqlldr
userid=system/manager control='c:\controlctl'
2、方法二:利用PLSQL Developer:在单个文件不大的情况下(少于100000行),并且目的表结构已经存在的情况下——对于excel而言肯定不会超过了,因为excel文件的最大行为65536——
可以全选数据COPY ,然后用PLSQL Developer工具。
a 、在PLSQL Developer的sql window里输入select
from test for update;
b、按F8执行
c、打开锁, 再按一下加号
鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后COMMIT提交即可。
还有很多第三方工具,Toad,PL/SQL Developer,SQL
Navigator等等。
3、方法三
、使用其它数据转移工具作中转站,如:Sql Server
2000。
先将excel表导入sqlserver数据库中,然后再从Sql
server导入到oracle中。这两部 *** 作都简单,如果不会随便查个帮助就可以了。
三、注意事项:
1、是注意excel文件的版本和格式要与导入到sql server时的数据源匹配。如果导入到sql
server时的数据源选Microsoft Excel 97-2000的话,而excel文件的版本为Micaosoft Excel 50/95
工作簿,则有可能出问题。关于如何看Excle文件格式,你打开excel文件,选择另存为,即可看到像Micaosoft Excel 50/95
工作簿或者是Microsoft Office Excle
工作簿等等其它的保存类型。
2、就是由Sqlserver导入到oracle中时,记得将在oracle中的表名全部用大写。因为oracle的表名都是大写的,而sql的表可能是大小混写的,所以导入后在oracle里查不到该表,比如这个Products表在oracle里查询就应该写成select
from scott"Products";
新建一个1MDB文件,然后开始-->获取外部数据--->导入--->选择你的XLS文件。
编程:吧1mdb作为数据源,读取数据然后写入到你的MSSQL表中。
也可以直接把1mdb导入到MSSQL中
1、首先准备好一个要导入Access的Excel文件:
2、打开Access选择外部数据-Excel,d出短话匡,单机“浏览”按钮,选择准备好的excel文件,如下图:
3、Access会自动读取Excel的页签的名称,这里选择唯一的Sheet,名字叫 plan,如图:
4、单机下一项,选择第一行包含列标题,目的是把第一行的数据变成字段名称:
5、为每一个字段选择相应的数据类型,例如日期类型、数字类型、货币类型还有文本类型等等,如下图:
6、根据需要,确定是否添加主键:
7、为即将导入的表格定义新的名称:
8、导入完成,如图所示:
扩展资料
Access的用途体现在两个方面:
一、用来进行数据分析: access有强大的数据处理、统计分析能力,利用access的查询功能,可以方便地进行各类汇总、平均等统计。并可灵活设置统计的条件。
比如在统计分析上万条记录、十几万条记录及以上的数据时速度快且 *** 作方便,这一点是Excel无法与之相比的。 这一点体现在:会用access,提高了工作效率和工作能力。
二、用来开发软件: access用来开发软件,比如生产管理、销售管理、库存管理等各类企业管理软件,其最大的优点是:易学!非计算机专业的人员,也能学会。
低成本地满足了那些从事企业管理工作的人员的管理需要,通过软件来规范同事、下属的行为,推行其管理思想。(VB、net、 C语言等开发工具对于非计算机专业人员来说太难了,而access则很容易)。
这一点体现在:实现了管理人员(非计算机专业毕业)开发出软件的“梦想”,从而转型为“懂管理+会编程”的复合型人才。
另外,在开发一些小型网站WEB应用程序时,用来存储数据。例如ASP+Access。这些应用程序都利用ASP技术在InternetInformation Services运行。比较复杂的WEB应用程序则使用PHP/MySQL或者ASP/Microsoft SQL Server。
ACCESS的用途更多,体现在很多方面:
表格模板。 只需键入需要跟踪的内容,Access 便会使用表格模板提供能够完成相关任务的应用程序。
Access 可处理字段、关系和规则的复杂计算,以便您能够集中精力处理项目。 您将拥有一个全新的应用程序,其中包含能够立即启动并运行的自然 UI。
创建和运行旧数据库。 尽情享用对您的现有桌面数据库 (ACCDB/MDB) 的支持。
参考资料:
1、打开要导入的Excel文件,观察第一列是为字段还是数据
打开SQLServer,在需要导入的数据点击右键 任务-导入数据
出现导入导出向导。
点击下一步 ,进入选择数据源页面,注意红框设置。
点击下一步 ,进入选择目标页面,注意红框设置。
点击下一步 ,进入指定表复制或查询页面,注意红框设置。
点击下一步 ,进入选择源表和源视图页面,注意红框设置。
下一步,直到完成。出现执行结果页面。
最后在SqlServer查询表。
以上就是关于C#中如何将Excel中的数据批量导入到sql server全部的内容,包括:C#中如何将Excel中的数据批量导入到sql server、如何把Excel数据导入到数据库表中 asp.net、如何将Excel导入Oracle数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)