当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 用T-SQL导入文件数据到SQL Server

MSSQL
获取MSSQL数据字典的SQL语句
Microsoft Search 服务无法启动 解决办法.
找出所有非xml索引并重新整理的sql
SQL Server提示"选定的用户拥有对象,所以无法除去该用户”
SQL Server"错误 21002: [SQL-DMO]用户 * 已经存在问题解决
删除重复记录,并且剩下一条
select * from sp_who的解决方案
Sql语句与存储过程查询数据的性能测试实现代码
MSSQL 游标使用 心得
SQL 时间类型的模糊查询
mssql 指定字段编号sql语句
sql server中的decimal或者numeric的精度问题
sql 数据库还原图文教程
存储过程解密(破解函数,过程,触发器,视图.仅限于SQLSERVER2000)
MSSQL SERVER中的BETWEEN AND的使用
SQL Server约束增强的两点建议
SQL Server 更改DB的Collation
Oracle 10g各个帐号的访问权限、登录路径、监控状态命令查询等等
SQL Server的复制功能
sql 普通行列转换

MSSQL 中的 用T-SQL导入文件数据到SQL Server


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 121 ::
收藏到网摘: n/a

在我们的工作中,经常需要连续输入多个文件的数据到SQL Server的表中,有时需要从相同或者不同的目录中,同时将文件中的数据倒入。在这篇文章中,我们将讨论如何同时把一个目录中的文件的数据倒入到SQL Server中。 
    试验环境
    我们先创建整个试验的环境。创建文件目录“C:\MyImport”,和三个文件a.csv、b.csv和c.csv,文件内容如下。同时,在SQL Server中创建一个表用来存放导入的数据。
        C:\MyImport\a.csv 
        1, MAK, A9411792711, 3400.25 
        2, Claire, A9411452711, 24000.33 
        3, Sam, A5611792711, 1200.34 
        C:\MyImport\b.csv 
        11, Rubon, 9671792711, 400.14 
        22, Mike, 9418952711, 4000.56 
        39, Hsu, 75611792511, 1230.00 
        C:\MyImport\c.csv 
        69, Lucy, 8411992710, 305.11 
        45, Grace, 3413452713, 246.52 
        33, Saint, 5461795716, 1278.70 
        Create Database Bank
        Go
        Use Bank
        go
        Create table Account
        (
            [ID] int, Name Varchar(100), 
            AccountNo varchar(100), Balance money
        )
        Go
        Create table logtable 
        (
            id int identity(1,1), 
            Query varchar(1000), 
            Importeddate datetime default getdate()
        )        
    方法 1: XP_CMDSHELL 和BULK INSERT
    这个方法使用xp_cmdshell和Bulk Insert的SQL命令把一个目录中的文件倒入到SQL Server的表中。

创建存储过程

    在数据库中产生这个存储过程,这个存储过程有三个参数:文件路径,文件扩展名和数据库的表名。

Create procedure usp_ImportMultipleFiles @filepath varchar(500), 
@pattern varchar(100), @TableName varchar(128)
as
set quoted_identifier off
declare @query varchar(1000)
declare @max1 int
declare @count1 int
Declare @filename varchar(100)
set @count1 =0
create table #x (name varchar(200))
set @query =’master.dbo.xp_cmdshell "dir ’+@filepath+@pattern +’ /b"’
insert #x exec (@query)
delete from #x where name is NULL
select identity(int,1,1) as ID, name into #y from #x 
drop tabl