悠久建站学院 - 轻松建站从此开始!

悠久建站学院

买主机送正式版防伪系统
当前位置: 悠久互联 > 建站学院 > 数据库 > MSSQL > 正文

SQL Server数据导入导出的几种方法

时间:2011-06-10来源:独立ip空间作者:不用备案的主机点击: 次 【字体:
摘要:SQL Server数据导入导出的几种方法 :在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,结合我在做项目时的经历做一下汇总:

在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,结合我在做项目时的经历做一下汇总:

内容来自youjoys.com

1. SQL Server导入导出向导,这种方式是最方便的. 悠久.互联

 

独立ip主机

导入向导,微软提供了多种数据源驱动,包括SQL Server Native Cliant, OLE DB For Oracle,Flat File Source,Access,Excel,XML等,基本上可以满足系统开发的需求.

独立ip主机

同样导出向导也有同样多的目的源驱动,可以把数据导入到不同的目的源.

独立ip主机

对管理人员来说这种方式简单容易操作,导入时SQL Server也会帮你建立相同结构的Table. 独立ip主机

2. 用.NET的代码实现(比如有一个txt或是excel的档案,到读取到DB中) 悠久.互联

   2.1 最为常见的就是循环读取txt的内容,然后一条一条的塞入到Table中.这里不再赘述.

   2.2 集合整体读取,使用OLEDB驱动. 网站不用备案

  独立ip主机

代码如下:   内容来自youjoys.com

代码
string strOLEDBConnect = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\1\;Extended Properties='text;HDR=Yes;FMT=Delimited'";

内容来自youjoys.com


OleDbConnection conn
= new OleDbConnection(strOLEDBConnect);
conn.
Open();
SQLstmt
= "select * from 1.txt";//读取.txt中的数据
DataTable dt
=new DataTable();
OleDbDataAdapter da
= new OleDbDataAdapter(SQLstmt, conn);
da.Fill(dt);
//在DataSet的指定范围中添加或刷新行以匹配使用DataSet、DataTable 和IDataReader 名称的数据源中的行。

悠久.互联


if(dt.Rows.Count>0)
foreach(DataRow dr
in dt.Rows)
{
SQLstmt
= "insert into MyTable values('" + dr..."

3.BCP,可以用作大容量的数据导入导出,也可以配合来使用. 不用备案的主机

语法:

悠久.互联

BCP语法
bcp {[[database_name.][schema].]{table_name | view_name} | "query"} 独立ip空间
{
in | out | queryout | format} data_file
[-mmax_errors] [-fformat_file] [-x] [-eerr_file]
[-Ffirst_row] [-Llast_row] [-bbatch_size]

网站不用备案


[-ddatabase_name] [-n] [-c] [-N] [-w] [-V (70 | 80 | 90 )]
[-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term]

独立ip主机


[-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size]
[-S [server_name[\instance_name]]] [-Ulogin_id] [-Ppassword]

独立ip主机


[-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]
不用备案的空间

请注意数据导入导出的方向参数:in,out,queryout 悠久.互联

如:  

独立ip空间

 

不用备案的空间

如:

 

独立ip主机

4.BULK INSERT. T-SQL的命令,允许直接导入数据 不用备案的空间

语法:   独立ip空间

BULK INSERT语法
BULK INSERT
[ database_name. [ schema_name ] . | schema_name. ] [ table_name | view_name ]
FROM 'data_file'
[ WITH
(
[ [ ,
] BATCHSIZE =batch_size ]
[ [ , ] CHECK_CONSTRAINTS ]
[ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]

网站不用备案


[ [ , ] DATAFILETYPE =
{
'char' | 'native'| 'widechar' | 'widenative' } ]
[ [ , ] FIELDTERMINATOR = 'field_terminator' ]
[ [ , ] FIRSTROW = first_row ]
[ [ , ] FIRE_TRIGGERS ]
[ [ , ] FORMATFILE ='format_file_path' ] 独立ip主机
[ [ , ] KEEPIDENTITY ]
[ [ , ] KEEPNULLS ]
[ [ , ] KILOBYTES_PER_BATCH =kilobytes_per_batch ]
[ [ , ] LASTROW =last_row ]
[ [ , ] MAXERRORS =max_errors ] 不用备案的主机
[ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]
[ [ , ] ROWS_PER_BATCH =rows_per_batch ]
[ [ , ] ROWTERMINATOR ='row_terminator' ]
[ [ , ] TABLOCK ]
[ [ , ] ERRORFILE ='file_name' ]
)]

悠久.互联

 
重要参数: 独立ip主机

FIELDTERMINATOR,字段分隔符 悠久.互联

FIRSTROW:第一个数据行 悠久.互联

ROWTERMINATOR:行终结符  不用备案的主机

如:

BULK INSERT dbo.ImportTest
FROM 'C:\ImportData.txt'
WITH ( FIELDTERMINATOR =',', FIRSTROW = 2 ) 独立ip主机

 

  不用备案的主机

 

独立ip空间

 

不用备案的空间

  不用备案的主机

  独立ip主机

 5. OPENROWSET也是T-SQL的命令,包含有DB连接的信息和其它导入方法不同的是,OPENROWSET可以作为一个目标表参与INSERT,UPDATE,DELETE操作. 内容来自youjoys.com

语法:   独立ip空间

代码
OPENROWSET
( {
'provider_name', { 'datasource';'user_id';'password' 网站不用备案
| 'provider_string' }
, {
[ catalog. ] [ schema. ] object
| 'query'
}
| BULK 'data_file',

独立ip空间


{ FORMATFILE
='format_file_path' [ <bulk_options> ]
| SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} )
<bulk_options> ::=
[ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] 不用备案的主机
[ , ERRORFILE ='file_name' ]
[ , FIRSTROW = first_row ]
[ , LASTROW = last_row ]
[ , MAXERRORS = maximum_errors ]
[ , ROWS_PER_BATCH =rows_per_batch ]

如:

内容来自youjoys.com

INSERT INTO dbo.ImportTest
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\ImportData.xls', 'SELECT * FROM [Sheet1$]' WHERE A1 IS NOT NULL)

独立ip主机

  独立ip空间

  独立ip主机

 

 

 

独立ip空间

不用备案的主机

  不用备案的主机

6.OPENDATASOURCE

悠久.互联

  独立ip主机

 

内容来自youjoys.com

  独立ip主机

  悠久.互联

 语法:

 

内容来自youjoys.com

 

网站不用备案

  独立ip主机

 

独立ip主机

OPENDATASOURCE ( provider_name,init_string )
悠久.互联

如: 不用备案的主机

INSERT INTO dbo.ImportTest
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\ImportData.xls;Extended Properties=Excel 8.0')...[Sheet1$] 独立ip主机

  独立ip主机

  独立ip空间

 

  独立ip主机

  不用备案的空间

独立ip空间

  独立ip主机

  独立ip空间

7.OPENQUERY.是在linked server的基础上执行的查询.所以执行之前必须先建立好link server.OPENQUERY的结果集可以作为一个table参与DML的操作.

内容来自youjoys.com

语法: 独立ip空间

OPENQUERY (linked_server ,'query')

  独立ip主机

如:

 

  独立ip主机

  内容来自youjoys.com

EXEC sp_addlinkedserver 'ImportData',
   'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0',
   'C:\ImportData.xls',
   NULL,
   'Excel 8.0'
GO 网站不用备案

  独立ip主机

  独立ip空间

INSERT INTO dbo.ImportTest
SELECT *
FROM OPENQUERY(ImportData, 'SELECT * FROM [Sheet1$]')

 

不用备案的空间

  独立ip主机

 

独立ip空间

 

独立ip空间

  不用备案的空间

  独立ip空间

 

  内容来自youjoys.com

不用备案的空间

以上只是简单总结的一些DB数据导入导出的方法及其一些简单的实例,希望对你实践中会有所帮助.

下载此文章 (欢迎转载,请注明出处:http://www.youjoys.com/article/database/mssql/20110610/4064.html)

------分隔线----------------------------
栏目列表
我要订做网站
推荐内容