您的位置:首页 > 数据库

Transact-SQL进行数据导入导出方法

2008-03-27 15:09 836 查看
转载自http://www.cnblogs.com/PingFang/archive/2007/08/16/857716.html

使用Transact-SQL进行在相同和不同是数据库之间的数据导入导出主要用到了opendatasource和openrowset这两个系统函数。注意:在导入时,如果被导入的表Table1有主键,这时就要判断Table1的主键是否会存在相同的值,如果存在是导入不成功的,只有主键唯一的情况才能导入成功。

Table1:被导入数据的表

Table2: 数据来源表

SourcePath: Access数据库和Excel文件的路径

FieldName: 字段

Value: 值

1. SQL Server同数据库之间进行数据导入(INSERT INTO,UPDATE SET)

a. 导入一条记录

INSERT INTO Table1 (FieldName1, FieldName2,…) Values (Value1, Value2,…)

b. 批量导入

INSERT INTO Table1 (FieldName1, FieldName2,…) SELECT (FieldName1, FieldName2,…) FROM Table2

c. 修改一条记录

UPDATE Table1 SET FieldName1= Value1, FieldName2= Value2,…WHERE 条件字段=条件值

d. 批量修改

UPDATE Table1 SET Table1. FieldName1= Table2. FieldName1, Table1. FieldName2= Table2. FieldName2,… FROM Table2 WHERE Table1.FieldName3 = Table2. FieldName3

2. SQL Server同数据库之间进行数据导出(SELECTE INTO )

SELECT * INTO Table1 FROM Table2

此时Table1在SQL Server数据库是不存在的,否则导入不成功。*:代表要导入的字段

3. SQL Server不同数据库之间进行数据导入(INSERT INTO OPENDATASOURCE)

SELECT * INTO Table1 FROM OPENDATASOURCE( 'SQLOLEDB', 'Data Source=127.0.01;User ID=sa;Password=' ). Table2

4. SQL Server不同数据库之间进行数据导出

INSERT INTO OPENDATASOURCE( 'SQLOLEDB', 'Data Source=127.0.01;User ID=sa;Password=' ). Table1 select * from Table2

5. SQL Server数据库从Access数据库导入数据(INSERT INTO OPENDATESOURCE)

a. Access数据库无密码

INSERT INTO Table1 (FieldName1, FieldName2,…) SELECT FieldName1, FieldName2,…FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Persist Security Info=False')... Table2

b. Access数据库有密码(123456)

INSERT INTO Table1 (FieldName1, FieldName2,…) SELECT FieldName1, FieldName2,…FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + SourcePath + "; User ID=Admin; Jet OLEDB:Database Password=123456;')... Table2

6. SQL Server数据库导出数据到Access数据库

a.Access数据库无密码

INSERT INTO

OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + SourcePath + ";Persist Security Info=False')... Table1 (FieldName1, FieldName2,…) SELECT FieldName1, FieldName2,… FROM Table2

b.Access数据库有密码(123456)

INSERT INTO

OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + SourcePath + "; User ID=Admin; Jet OLEDB:Database Password=123456;')... Table1 (FieldName1, FieldName2,…) SELECT FieldName1, FieldName2,… FROM Table2

7. SQL Server数据库从Excel文件导入数据

SELECT * INTO Table1 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Excel 5.0; HDR=YES;DATADAE=" + SourcePath + "')…[Sheet1$]

在book1.xls的Sheet1中必须有和Table1表相对应的字段,否则会出错。

8. SQL Server数据库导出数据到Excel文件

INSERT INTO OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;database="+ SourcePath +"', Sheet1$ ) select FieldName1, FieldName2,… FROM Table2

提醒:在SQL Server数据库与Access数据库、Excel文件之间的数据导入导出用上述方法有个缺陷就是SQL Server数据库与Access数据库、Excel文件必须是在同一计算机上。因为Access数据库、Excel文件是本地数据库。如果是不在同一计算机,可以先把数据读出存放在内存中再写入,这是利用内存做中转站。这样速度比上述方法速度慢。由于本人水平有限,上述如有不正确,不恰当之处,请指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: