搜档网
当前位置:搜档网 › SQL SERVER 批量导入XML格式文件定义

SQL SERVER 批量导入XML格式文件定义

SQL SERVER 批量导入XML格式文件定义
SQL SERVER 批量导入XML格式文件定义

XML Format Files (SQL Server) 1.好处

比较于 SQL Server 非 XML的格式化文档,XML 有以下好处:

1.XML更易读,更容易扩展,更易维护。

2.XML 文件中包含要导入数据表的列。

3.XML 文件可以导入包含大数据对象的 (LOB)的文件。

2.XML Schema

2.1.根节点BCPFORMAT

XML Format file 的根节点,定义了整个XML format file 的命名空间和自定义命名空间 xsi.

2.2.定义列映射

1.RECORD: 一个包含一个或多个 FIELD 子XML 节点。这些FIELD 子节点出现的顺序就

是在数据文件中节点的顺序。

2.FIELD: 定义数据文件中的一列,映射到数据库表的列。每个元素/节点都与

其他元素无关。也就是说元素之间是相互独立的。

FIELD 节点包含以下元素:

1)ID: 自定义的数据文件中列的唯一逻辑标识符,将在

SOURCE=”FIELDID” 中引用。此属性必须赋值。

2)xsi:type=”type of field”, 定义元素实例的类型。该属性是必须的,且取决与

数据类型。此列对应的是文件中列的信息。

有如下表所示所有类型:

3)LENGTH = “n”: 此属性定义固定长度的数据类型的实例长度。此属性可选的,

当xsi:type 为NativeFixed, CharFixed,或者NCharFIxed 该属性是必须的。

4)PR EFIX_LENGTH = “p”: 次属性定义二进制数据表示形式的前缀的长度。必须

为1,2,4,8值中的一个。此属性为可选,当xsi:type 值为NativePrefix, CharPrefix, NCharPrefix 时该属性为必须。

5)MA X_LENGTH = ‘m’: 此属性指定了给定字段中可以存储的最大字节数。如果

没有目标表,列的最大长度就是未知的。那么用MAX_LENGTH属性限定输出字符列的最大长度,从而限制为列值分配的存储空间。

6)COLLATION= ‘collation name’: 及适用与字段,SQL的排名规则名称简述如下,

可以浏览SQL Server 排序规则名称 (Transact-SQL)获取更多更详细信息。

SQL_SortRules [_Pref]_CPCodePage_(CaseSensitiveity_AccentSensitivity)| (_BIN)

a.SortRules: 标识字母表或语言的字符串,当指定按字典排序时应用该字

母表或语言的排序规则。s

b.Pref: 指定大写字母优先

c.CodePage: CP1指定1252,CP1251, CP850s

d.CaseSensitivity: CI 不区分大小写,区分大小写

e.AccentSensitivity: AI 指定不区分重音,AS 指定区分重音。

f.BIN: 指定使用二进制排序顺序

2.3.定义行映射

1.: 定义包含一个或多个元素的复杂元素。元素的顺序

定义中的元素的顺序无关。的声明顺序决定结果行列的顺序。

2., 对应Record 中定义的一个FIELD。

COLUMN 中的元素定义如下:

1)SOURCE = “fieldID”s, 指定映射到列的ID.必须属性。

2)Name = “column name”,指定格式化文件所表示的行集中的列名。

它仅用于标识结果集中的列,并且该列不需要与目标表中使用的列名相对

应。

3)xsi:type = “column type”, 定义元素实例的数据类型。

时,才使用LENGTH, 且必须为正整数。

5)PRECISION = “n”. 指定数字的位数。可选属性。

6)SCALE = “int”, 指定小数点后的位数。可选属性。

7)NULLABLE = “{YES|NO}”, 指示列是否可以接受 NULL 值。可选属性。

Excel到SQLServer数据库的数据导入导出技术研究

Excel到S QL Server数据库的数据导入导出技术研究3 王晓刚 杨春金 (武汉理工大学信息工程学院 武汉 430063) 摘 要 介绍Del phi中,采用新一代数据访问技术dbExp ress和OLE技术来实现Excel数据表到S QL Server数据库的数据导入和导出,及其在高速公路车辆查询系统中的应用。 关键词 dbExp ress S QL server Excel OLE 中图分类号 TP317.3 1 引言 办公自动化信息管理系统的用户常常会遇到需要把由Excel存储的数据资料导入到S QL Server 数据库,同时又要把S QL Server数据库中的数据导出到Excel数据表的问题。不同的编程语言有不同的解决方法。本文介绍应用Del phi编程来实现Excel数据表到S QL Server数据库的数据导入导出技术。 2 基本思路 OLE自动化是W indows应用程序操纵另一个程序的一种机制。被操纵的一方称为自动化服务器,操纵自动化服务器的一方称为自动化控制器。通过引用这些对象实现对自动化服务器的调用,然后通过设置对象的属性和使用对象的方法操纵自动化服务器,实现两者之间的通讯。 Del phi在数据库方面提供的强大又富有弹性的能力给广大编程人员带来了方便。dbExp ress是Del phi下一代的数据访问技术。提供高效率数据访问以及提供跨平台能力的数据访问引擎。dbEx2 p ress包含了7个组件,它们是TS QLConnecti on、TS QLDataSet、TS QLQuery、TS QLSt oredPr oc、TS QLT2 able、TS QLMonit or和TSi m p le DataSet,这些组件的功能就是让应用程序连接后端数据库,访问数据表中的数据,把修改的数据更新回数据库中以及让程序员观察dbExp ress向后端数据库下达命令等。 Del phi完全支持OLE应用程序自动化,提供的Servers栏控件可以很容易开发OLE自动化控制器实现对OLE自动化服务器的调用。在Del phi内部运行OLE自动化程序需要在U ses语句中加入Co2 mobj来开始自动化程序。通过调用Create O le Ob2 ject来检索一个自动化对象,Create O le Object调用大量系统内部的OLE函数,创建一个I dis patch的实例,并从Variant中返回一个Del phi变量类型,可以根据不同的环境提供不同的功能,这里我们使用Variant来引用Excel内部的对象以建立Del phi与Excel之间的连接。并采用dbExp ress建立Del phi 和S QL Server之间的连接,来实现Excel数据表到S QL Server数据库的数据导入和导出。 3 dbExp ress访问S QL Server技术 dbExp ress通过TS QLConnecti on组件同S QL Server数据库进行连接。双击TS QLConnecti on,就会弹出它的组件编辑器,在这个组件编辑器里,我们就可以定义连接数据库的类型,数据库名称,登陆帐号、密码等信息。以下就是我们连接名为DB2 SERVER的数据库服务器的具体情况: D river Name=MSS QL//数据库类型 Host N a me=DBSERVER//数据库服务器 Database=ETEST//数据库名 U ser_Na me=sa//登陆帐号 Pass word=sa//登陆密码 B l obSize=-1 LocaleCode=0000 MSS QL Transls olati on=ReadComm ited OS Authenticati on=False 在连接上数据库以后,dbExp ress提供了两种方法:一是使用TSi m p le DataSet组件;二是使用TS QLDataSet搭配T DataSetPr ovider和TClient D ata2 Set组件来对数据库进行访问。在实现简单数据访 85 计算机与数字工程 第35卷3收到本文时间:2006年6月8日 作者简介:王晓刚,男,硕士研究生,研究方向:网络设计及信息管理。杨春金,男,副教授,研究方向:信号与信息处理。

从SQL Server中导入导出Excel的基本方法1

从SQL Server中导入/导出excel 的基本方法 /*=========== 导入/导出excel 的基本方法===========*/ 从excel文档中,导入数据到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$) /*===========================================*/ --假如从sql数据库中,导出数据到excel,假如excel文档已存在,而且已按照要接收的数据创建好表头,就能够简单的用: insert into openrowset(microsoft.jet.oledb.4.0 ,excel 5.0;hdr=yes;database=c:test.xls,sheet1$) select * from 表 --假如excel文档不存在,也能够用bcp来导成类excel的文档,注意大小写: --导出表的情况 exec master..xp_cmdshell bcp 数据库名.dbo.表名out "c:test.xls" /c -/s"服务器名" /u"用户名" -p"密码" --导出查询的情况 exec master..xp_cmdshell bcp "select au_fname, au_lname from pubs..authors order by au_lname" queryout "c:test.xls" /c -/s"服务器名" /u"用户名" -p"密码" /*--说明: c:test.xls 为导入/导出的excel文档名. sheet1$ 为excel文档的工作表名,一般要加上$才能正常使用. --*/ --上面已说过,用bcp导出的是类excel文档,其实质为文本文档, --要导出真正的excel文档.就用下面的方法 /*--数据导出excel 导出表中的数据到excel,包含字段名,文档为真正的excel文档 ,假如文档不存在,将自动创建文档 ,假如表不存在,将自动创建表 基于通用性考虑,仅支持导出标准数据类型 --邹建2003.10--*/ /*--调用示例

基于C#的Excel数据批量导入SqlServer的方法研究与实现

基于C#的Excel 数据批量导入SqlServer 的方法研究与实现 周 虎 (江苏联合职业技术学院徐州财经分院,江苏 徐州 221008) 摘 要:批量数据导入在实际工作中提高了数据处理的效率,保证了数据的完整性。本文以某地育龄妇女基本信息为例,详细介绍了Excel数据批量导入SqlServer的设计思路与实现方法。 关键词:Excel;SqlServer;批量数据导入;NPOI;C#编程中图分类号:TP311.11 文献标识码:A Research and Implementation of Excel Data Import to SqlServer Base on C# ZHOU Hu (Xuzhou Finance Branch ,Jiangsu Unit Technical Institute ,Xuzhou 221008,China ) Abstract:Bulk data import improve the efficiency of data processing in practical work to ensure the integrity of the data.In this paper,we take some basic information of women for example,details the Excel data design ideas and implementation of bulk import to SqlServer. Keywords:excel;SqlServer;bulk data import;NPOI;C# programming 文章编号:1008-0775(2014)-12-54-02 1 引言(Introduction) Excel是办公中常用的电子表格处理工具,SqlServer是目前流行的数据库管理系统,均在信息系统中被广泛使用[1]。在某地数字化计生服务管理系统中需要从育龄妇女基本信息管理系统中导入育龄妇女的基本信息,而育龄妇女基本信息管理系统中只能将当前单位中所有的育龄妇女信息导出到Excel 文件中,然后从Excel文件中将育龄妇女信息导入到SqlServer 数据库中。在进行数据导入时,每次只需将增量数据导入到数据库,同时Excel中一条记录要写入到数据库多张表中。目前Excel导入数据库主要包括以下几种方法: (1)将Excel转化为XML或者CSV文件,然后导入数据库。(2)使用Office提供的Com组件技术。(3)使用第三方组件,如NPOI或OLEDB。 其中第一种方法和第二种方法操作复杂或者运行缓慢,在实际应用中效果均不是很理想[2],并且本系统在对Excel数据导入到数据库时需要对需要对数据进行进一步加工和处理,所以本文主要借助第三方组件NPOI的方式来实现Excel数据的批量导入。 2 Excel 批量数据导入技术分析(Excel import bulk data technical analysis) 在本项目中,需要将育龄妇女基本信息Excel文件内容读取到内存中,然后在内存中和数据库中的育龄妇女信息进行比对,将增量数据导入数据库,具体流程如图1所示。 图1 NPOI读取Excel数据到数据库 Fig.1 NPOI read excel data to database 在图1操作流程中,关键技术包括使用NPOI读取Excel 数据到内存中的DataTable和从内存中将增量数据导入到数据库。 2.1 NPOI NPOI是一个开源的基于.Net的读写Excel、Word等微软OLE2组件文档的项目,使用NPOI你就可以在没有安装Office 或者相应环境的机器上对Word/Excel文档进行读写[3]。NPOI 是一个免费的开源组件,包含了大部分的Excel功能,同时支持文件的导入与导出。 在本项目中使用NPOI将Excel表中的数据读取到内存中的Datatable中,同时将育龄妇女的编号存入集合中,便于和数据库中的育龄妇女信息进行比对。 2.2 增量数据导入到数据库 在本项目中,由于每次需要导入的育龄妇女基本信息都是包含所有的育龄妇女基本信息,为了进一步提高导入数据的效率,采用每次导入增量数据的方法,这里需要将Excel文件中的育龄妇女信息和数据库中的育龄妇女信息进行集合运算,将数据库中不包含的但Excel文件中包含的育龄妇女信息先计算出来,然后对增量数据进行批量导入数据库。具体流程如图2所示。 图2 增量数据导入 Fig.2 Incremental data import 在计算出增量数据后,Excle文件中一条记录需要同时保 软件工程师 SOFTWARE ENGINEER 第17卷第12期2014年12月 V ol.17 No.12Dec. 2014

sqlserver 数据库导出导入方法

网上例子 insert into DAY(numchnid,numsrvid,numprovid,numgwid,r_day,mo_all,mt_all,mt_valid, mt_userr,mt_sum) select v.numchnid, v.numsrvid, v.numprovid, v.numgwid, DATE(v.r_day), v.mo_all, case when w.mt_all is null then 0 else w.mt_all end, case when w.mt_valid is null then 0 else w.mt_valid end, case when w.mt_user is null then 0 else w.mt_user end, case when w.sumfee is null then 0 else w.sumfee end from report_tmp3 v left join report_tmp4 w on v.numchnid = w.numchnid and v.numsrvid = w.numsrvid and v.numprovid = w.numprovid and v.numgwid = w.numgwid and v.r_day = w.r_day; commit; 同库导出导入数据: insert into news.dbo.Table_1(title,cid) select title, id from Article where Articleid=1 跨库导出导入数据: sql语句中使用数据库连接 insert into Table_1(title,cid) select ArticleClass,ArticleTitle from OPENDATASOURCE('SQLOLEDB','Data Source=.;User ID=sa;Password=123').database1.dbo.Article(会遇到问题后面有解决方法) --查询示例 select * from ITSV.数据库名.dbo.表名 --导入示例 select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例

c_实现excel数据高效导入到sql数据库

c#实现excel数据高效导入到sql数据库 本文来自: IT知道网(https://www.sodocs.net/doc/9612799334.html,) 详细出处参考: https://www.sodocs.net/doc/9612799334.html,/html/net/c/20081210/3092.html 本文实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是 System.Data.SqlClient.SqlBulkCopy 类来实现。不但速度快,而且代码简单,下面测试代码导入一个6万多条数据的sheet,包括读取(全部读取比较慢)在我的开发环境中只需要10 秒左右,而真正的导入过程只需要4.5秒。 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.Ace.12.0.OLEDB.12.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 12.0;"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open();

SqlServer 使用存储过程 导出为Excel

SqlServer 使用存储过程导出为Excel 一个脱离office组件的可以将语句结果导出到Excel的过程 --1.执行时所连接的服务器决定文件存放在哪个服务器 [sql]view plain copy print? 1.CREATE PROC ExportFile 2. @QuerySql VARCHAR(max) 3. ,@Server VARCHAR(20) 4. ,@User VARCHAR(20) = 'sa' 5. ,@Password VARCHAR(20) 6. ,@FilePath NVARCHAR(100) = 'c:\ExportFile.csv' 7.AS 8.DECLARE @tmp VARCHAR(50) = '[##Table' + CONVERT(VARCHAR(36),NEWID())+']' 9.BEGIN TRY 10.DECLARE @Sql VARCHAR(max),@DataSource VARCHAR(max)=''; 11.--判断是否为远程服务器 12. IF @Server <> '.'AND @Server <> '127.0.0.1' 13.SET @DataSource = 'OPENDATASOURCE(''SQLOLEDB'',''Data Source='+@Server+';User ID='+@Us er+';Password='+@Password+''').' 14.--将结果集导出到指定的数据库 15.SET @Sql = REPLACE(@QuerySql,' from ',' into '+@tmp+ ' from ' + @DataSource) 16. PRINT @Sql 17.EXEC(@Sql) 18. 19.DECLARE @Columns VARCHAR(max) = '',@Data NVARCHAR(max)='' 20.SELECT @Columns = @Columns + ',''' + name +''''--获取列名(xp_cmdshell导出文件没有列名) 21. ,@Data = @Data + ',Convert(Nvarchar,[' + name +'])'--将结果集所在的字段更新为nvarchar(避 免在列名和数据union的时候类型冲突) 22.FROM tempdb.sys.columns WHERE object_id = OBJECT_ID('tempdb..'+@tmp) 23.SELECT @Data = 'SELECT ' + SUBSTRING(@Data,2,LEN(@Data)) + ' FROM ' + @tmp 24.SELECT @Columns = 'Select ' + SUBSTRING(@Columns,2,LEN(@Columns)) 25.--使用xp_cmdshell的bcp命令将数据导出 26.EXEC sp_configure 'xp_cmdshell',1 27. RECONFIGURE 28.DECLARE @cmd NVARCHAR(4000) = 'bcp "' + @Columns+' Union All ' + @Data+'" queryout ' + @Fi lePath + ' -c' + CASE WHEN RIGHT(@FilePath,4) = '.csv'THEN' -t,'ELSE''END + ' -T' 29. PRINT @cmd 30.exec sys.xp_cmdshell @cmd 31.EXEC sp_configure 'xp_cmdshell',0 32. RECONFIGURE 33.EXEC('DROP TABLE ' + @tmp) 34.END TRY 35.BEGIN CATCH

ASP实现将Excel表格数据批量导入到SQLServer数据库

ASP实现 将Excel表格数据批量导入到SQLServer数据库 说明: 1. 被导入的工作表格, 默认以Sheet1命名, 当然也可以指定为其他的, 但必须与程序中的相符. 2. 被导入的工作表中,第?一列第?一行必须有数据. 3. 被导入的工作表中的列数要与程序中相符. '定义打开Excel表格的函数 Function OpenExcel(path) dim excel,rs,strsql On Error Resume Next Set rs = Server.CreateObject("ADODB.RecordSet") Set excel = Server.CreateObject("ADODB.Connection") excel.Open "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & path If Err.number<> 0 Then Response.Write "请检查上传的Excel文件内部格式,文件无法打开,导入失败!" Response.End End If strsql = "SELECT * FROM [Sheet1$]" '在这里指定工作薄名称,默认是Sheet1$ Set rs = excel.Execute(strsql) Set OpenExcel = rs End Function '读取文件中的内容 Dim rsInfo Set rsInfo = Server.CreateObject("ADODB.RecordSet") Set rsInfo = OpenExcel("E:/a.xls")'这里的文件路径请用Server.Path来获取 '检查读取结果 If rsInfo.State<> 1 Then Response.Write "请检查Excel文件中的工作表命名是否为Sheet1,导入失败!" Response.End End If If rsInfo.EOF And rsInfo.BOF Then Response.Write "没有找到Excel表中的数据,导入失败!" Response.End End If If IsNull(rsInfo.Fields(0)) or Trim(rsInfo.Fields(0))="" Then Response.Write "没有找到Excel表中的数据,导入失败!" Response.End End If '这里指定导入数据的列数,列数少了退出 If rsInfo.Fields.Count< 7 Then Response.Write "Excel表中的数据列数不正确,导入失败!" Response.End End If '创建数据库连接 dim dbrs,conn,sql Set conn = Server.CreateObject("ADODB.Connection") Set dbrs = Server.CreateObject("ADODB.Recordset") '注: G_DB_ConnectString是连接数据库的字符串,自己定义 conn.ConnectionString = G_DB_ConnectString conn.Open '打开数据库连接

sqlserver数据字典导出excel

SELECT 表名=case when a.colorder=1 then https://www.sodocs.net/doc/9612799334.html, else '' end, 表说明=case when a.colorder=1 then isnull(f.value,'') else '' end, 字段序号=a.colorder, 字段名=https://www.sodocs.net/doc/9612799334.html,, 标识=case when COLUMNPROPERTY( a.id,https://www.sodocs.net/doc/9612799334.html,,'IsIdentity')=1 then '√'else '' end, 主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in ( SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid ))) then '√' else '' end, 类型=https://www.sodocs.net/doc/9612799334.html,, 占用字节数=a.length, 长度=COLUMNPROPERTY(a.id,https://www.sodocs.net/doc/9612799334.html,,'PRECISION'), 小数位数=isnull(COLUMNPROPERTY(a.id,https://www.sodocs.net/doc/9612799334.html,,'Scale'),0), 允许空=case when a.isnullable=1 then '√'else '' end, 默认值=isnull(e.text,''), 字段说明=isnull(g.[value],'') FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and https://www.sodocs.net/doc/9612799334.html,<>'dtproperties' left join syscomments e on a.cdefault=e.id left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id left join sys.extended_properties f on d.id=f.major_id and f.minor_id =0 --where https://www.sodocs.net/doc/9612799334.html,='要查询的表' --如果只查询指定表,加上此条件 order by a.id,a.colorder

Excel导入SQLServer的三种方案

//方案一:通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL Server openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Excel files(*.xls)|*.xls"; if(openFileDialog.ShowDialog()==DialogResult.OK) { FileInfo fileInfo = new FileInfo(openFileDialog.FileName); string filePath = fileInfo.FullName; string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0"; try { OleDbConnection oleDbConnection = new OleDbConnection(connExcel); oleDbConnection.Open(); //获取excel表 DataTable dataTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); //获取sheet名,其中[0][1]...[N]: 按名称排列的表单元素 string tableName = dataTable.Rows[0][2].ToString().Tri m(); tableName = "[" + tableName.Replace("'","") + "]"; //利用SQL语句从Excel文件里获取数据 //string query = "SELECT classDate,classPlace,classTeacher,classTitle,classID FROM " + tableName; string query = "SELECT 日期,开课城市,讲师,课程名称,持续时间FROM " + tableName; dataSet = new DataSet(); //OleDbCommand oleCommand = new OleDbCommand(query, oleDbConnection); //OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand); OleDbDataAdapter oleAdapter = new OleDbDataAdapter(query,connExcel); oleAdapter.Fill(dataSet,"gch_Class_Info"); //dataGrid1.DataSource = dataSet; //dataGrid1.DataMember = tableName; dataGrid1.SetDataBinding(dataSet,"gch_Class_Info"); //从excel文件获得数据后,插入记录到SQL Server的数据表 DataTable dataTable1 = new DataTable(); SqlDataAdapter sqlDA1 = new SqlDataAdapter(@"SELECT classID, classDate, classPlace, classTeacher, classTitle, durativeDate FROM gch_Class_Info",sqlConnection1); SqlCommandBuilder sqlCB1 = new SqlCo mmandBuilder(sqlDA1);

Java高效实现批处理Excel数据导入数据库代码

(SQLServer) 库入数据处理Excel数据导批Java实现注:这是我之前写的Java实现批处理Excel数据导入数据库代码,绝对原创(最初发表于百度博客),可以实现批量处理,效率很高。使用时,里面有些(尤其那些红色部分)地方需要改为自己的数据信息。 package com.jxl; import jxl.Cell; import jxl.Sheet; import java.io.File; import java.io.InputStream; import java.sql.*; import java.util.Vector; import java.io.FileInputStream; import jxl.Workbook; /** * 耗时315.469秒jxl.jar excel导入SQL 包 * 耗时131.469秒 * 耗时125.448秒(系数6000) */ public class ExcelReadPre { public static void main(String[] args) { ExcelReadPre cr = new ExcelReadPre(); long start = System.currentTimeMillis();// 记录开始时间 cr.testRun();// 开始执行 long end = System.currentTimeMillis(); System.out.println(============耗時:==== + ((end - start) / 1000.0)); } public void testRun() { \\k0527\\;//自己存放excel文件的目录瑓楲杮瀠瑡??F:\\学习 try { File fileDir = new File(path); File files[] = fileDir.listFiles(); for (int i = 0; i < files.length; i++) { System.out.println(P第?椨??个文件:===== + files[i].getAbsolutePath()); this.writeToDb(files[i].getAbsolutePath()); } if (this.con != null && !con.isClosed()) { this.con.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }

把Excel表导入SQL数据库的两种方法

把Excel表导入SQL数据库的两种方法 SQLServer自身就有导入功能的 1、打开企业管理器,打开要导入数据的数据库,在表上按右键,所有任务-->导入数据,弹出DTS导入/导出向导,按下一步, 2、选择数据源 Microsoft Excel 97-2000,文件名选择要导入的xls文件,按下一步, 3、选择目的用于SQL Server 的Microsoft OLE DB提供程序,服务器选择本地(如果是本地数据库的话,如 VVV),使用SQL Server身份验证,用户名sa,密码为空,数据库选择要导入数据的数据库(如 client),按下一步, 4、选择用一条查询指定要传输的数据,按下一步, 5、按查询生成器,在源表列表中,有要导入的xls文件的列,将各列加入到右边的选中的列列表中,这一步一定要注意,加入列的顺序一定要与数据库中字段定义的顺序相同,否则将会出错,按下一步, 6、选择要对数据进行排列的顺序,在这一步中选择的列就是在查询语句中 order by 后面所跟的列,按下一步, 7、如果要全部导入,则选择全部行,按下一步, 8、则会看到根据前面的操作生成的查询语句,确认无误后,按下一步, 9、会看到表/工作表/Excel命名区域列表,在目的列,选择要导入数据的那个表,按下一步, 10、选择立即运行,按下一步, 11、会看到整个操作的摘要,按完成即可。 将EXCEL的数据提出放在数据集中,在通过循环将从表插入 <% 'On Error Resume Next '导入Excel电子表格数据到SQL Sever数据库 Open_Conn(SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName,SqlCon

SQLSERVER对单个表部分数据的导出导入

SQLSERVER将一个表中的部分查询数据导入另一个表中的方法: 一、若源表与目标表同在一台机器上,直接写SQL语句即可: 源表名:prdproductinfo_Source 称目标表名:PrdProductInfo_Goal INSERT INTO [PrdProductInfo_Goal] ([productTypeCode] ,[productTypeName] ,[productModelId] ,[productModelCode] ,[productModelName] ,[productModelSpec] ,[productCode] ,[productName] ,[madePlace] ,[packageLanguage] ,[devicesNumber] ,[madeBatchNumber] ,[madeCommandOrder] ,[madeDate] ,[outDate]) (select [productTypeCode] ,[productTypeName] ,[productModelId] ,[productModelCode] ,[productModelName] ,[productModelSpec] ,[productCode] ,[productName] ,[madePlace] ,[packageLanguage] ,[devicesNumber] ,[madeBatchNumber] ,[madeCommandOrder] ,[madeDate] ,[outDate] from prdproductinfo_Source) 二、若源表与目标表不在同一台机器上,则可先将源表中的数据导出到 EXCEL中,再将EXCEL中的数据导入到目标表中。操作步骤如下: A、将源表中的数据导出到EXCEL中,步骤如下:

教你在SQLServer数据库中导入导出数据.

教你在SQL Server数据库中导入导出数据 在我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验、净化和转换时,将会面临很大的挑战。幸好SQL Server为我们提供了强大、丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理。 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理;调用命令行工具BCP处理数据;使用数据转换服务(DTS)对数据进行处理。这三种方法各有其特点,下面就它们的主要特点进行比较。 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 一、使用方式的比较 1. 使用Transact-SQL进行数据导入导出 我们很容易看出,Transact-SQL方法就是通过SQL语句方式将相同或不同类型的数据库中的数据互相导入导出或者汇集在一处的方法。如果是在不同的SQL Server数据库之间进行数据导入导出,那将是非常容易做到的。一般可使用SELECT INTO FROM 和INSERT INTO。使用SELECT INTO FROM时INTO后跟的表必须存在,也就是说它的功能是在导数据之前先建立一个空表,然后再将源表中的数据导入到新建的空表中,这就相当于表的复制(并不会复制表的索引等信息)。而INSERT INTO的功能是将源数据插入到已经存在的表中,可以使用它进行数据合并,如果要更新已经存在的记录,可以使用UPDATE。 SELECT * INTO table2 FROM table1 --table1和table2的表结构相同 INSERT INTO table2 SELECT * FROM table3 --table2和table3的表结构相同 当在异构数据库之间的进行数据导入导出时,情况会变得复杂得多。首先要解决的是如何打开非SQL Server数据库的问题。 在SQL Server中提供了两个函数可以根据各种类型数据库的OLE DB Provider打开并操作这些数据库,这两个函数是OPENDA TASOURCE和OPENROWSET。它们的功能基本上相同,不同之处主要有两点。 (1) 调用方式不同。 OPENDATASOURCE的参数有两个,分别是OLE DB Provider和连接字符串。使用OPENDATASOURCE只相当于引用数据库或者是服务(对于SQL Server、Oracle等数据库来说)。要想引用其中的数据表或视图,必须在OPENDATASOURCE(...)后进行引

SQLServer数据库中成批导入数据的几个常用方法

SQLServer数据库中成批导入数据的几个常用方法 在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题。如要把产品信息从现有的进销存管理系统中导入到ERP系统中,却让企业用户手工的输入这些信息,不怎么现实。 其实,在SQL Server中本来就集成了很多成批导入数据的方法。有些项目实施顾问头疼的问题,在我们数据库管理员眼中,是小菜一碟。现在的重点就是,如何让用户了解这些方法,让数据导入变得轻松一些。 第一种方法:使用Select Into语句 若企业数据库都采用的是SQL Server数据库的话,则可以利用Select Into语句来实现数据的导入。Select Into语句,他的作用就是把数据从另外一个数据库中查询出来,然后加入到某个用户指定的表中。 在使用这条语句的时候,需要注意几个方面的内容。 一是需要在目的数据库中先建立相关的表。如想把进销存系统数据库(SQLServer)中的产品信息表(Product)导入到ERP系统中的产品信息表(M_Product)中。则前期是在ERP 系统的数据库中已经建立了这张产品信息表。 二是这种方法只复制表中的数据,而不复制表中的索引。如在进销存系统数据中的产品信息表中,在产品编号、产品种类等字段上建立了索引。则利用Select Into语句把数据复制到ERP系统的表中的时候,只是复制了数据内容的本身,而不会复制索引等信息。 三是这条语句使用具有局限性。一般情况下,这只能够在SQL Server数据库中采用。不过,对于SQL Server不同版本的数据库,如2008或者2003,还都是兼容的。若需要导入的对象数据库不是SQL Server的,则需要采用其他的方法。 四是采用这条语句的话,在目的表中必须不存在数据。否则的话,目的表中的数据会被清除。也就是说,这个语句不支持表与表数据的合并。在SQL Server中,有一条类似的语句,可以实现这个功能。这条语句就是:Insert Into。他的作用就是把另外一张表中的数据插入到当前表中。若用户想要的时表与表数据的合并,则可以采用这条语句。两者不能够混淆使用,否则的话,很容易导致数据的丢失。 五是以上两条语句都支持兼容的不同类型的数据类型。如在原标中,某个字段的数

相关主题