DODONG

博客园 首页 新随笔 联系 订阅 管理
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'sp_CVS2DB')
    
BEGIN
        
PRINT N'删除存储过程 sp_CVS2DB'
        
DROP  Procedure  sp_CVS2DB
    
END

GO

PRINT N'生成存储过程 sp_CVS2DB'
GO

/******************************************************************************
**        文件: sp_CVS2DB.SQL
**        名称: sp_CVS2DB
**        功能: 读取cvs文件导入到SQL数据中
**        作者: Dong.Wu
**        发布: 2007-09-09
**
*******************************************************************************
**        返回值列表
*******************************************************************************
**        返回值:        涵义:
**         -------        -----------------------------------------------------------
**        0            操作成功    
**
**
*******************************************************************************
**        其它说明
*******************************************************************************
**
**
*******************************************************************************
**        修订日志
*******************************************************************************
**        日期:        作者:        修订备注:
**        ----------    --------    -----------------------------------------------
**
******************************************************************************
*/

CREATE Procedure sp_CVS2DB

@Filepath varchar(500),    ----文件路径  
@FileName varchar(100),       ----文件名称
@TableName varchar(128)       ----需要导入的表名

AS
    
DECLARE @strSQL Varchar(1000)
    
DECLARE @iError INT                    --出错代码
    
    
BEGIN TRAN TranQ
    
    
---删除temp表原有记录重新INSERT数据
     SET @strSQL =
    
'DELETE FROM '+@TableName+' 
     INSERT INTO 
'+@TableName+'
     SELECT * FROM
     OPENROWSET(
''MSDASQL'',''Driver={Microsoft Text Driver (*.txt; *.csv)};DEFAULTDIR='+@Filepath+';Extensions=CSV;'',
     
''SELECT * FROM '+@FileName+''')'
    
Exec (@strSQL)
    
     
Set @iError = @@ERROR
        
If @iError <> 0
        
Begin
            
ROLLBACK TRAN TranQ
            
Return -1001
        
End
        
COMMIT TRAN TranQ
Return 0

GO

GRANT EXEC ON sp_CVS2DB TO PUBLIC

GO

CVS导入SQL中000231会变成231处理办法;
在文件目录下创建一个名为   Schema.ini   的文本文件名   
  
--写上如下内容(--后面的是注释,不要写到文本文件中)   
    
  [a.txt]                                                 
--下面的格式是为a.txt文件做说明的   
  ColNameHeader
=False                       --a.txt文件的第一行不是字段名   
  Format
=CSVDelimited                         --字段分隔符是CSV分隔符,即,   
  Col1
="col1"   Integer                         --a.txt中,第1列的列名是col1,类型是int   
  Col2
="col2"   char   width   50             --a.txt中,第2列的列名是col2,类型是int   
  MaxScanRows
=0                                   ---扫描整个文件   
  CharacterSet
=ANSI                            ---ANSI   字符集   
指定文件格式
  格式说明                   表格式                               Schema.ini   格式描述     
  Tab   制表符分隔       文件中的字段用制表符分隔           Format
=TabDelimited     
  CSV   分隔                   文件中的字段用逗号来分隔         Format
=CSVDelimited     
  自定义分隔               文件中的字段可以用任何字符       Format
=Delimited(自定义分隔符) 如:(#)  
                                    来分隔,所有的字符都可以   
                                    用来分隔,包括空格,但是   
                                  双引号   (   
"   )   除外     
                                  -   或者没有分隔符   -    Format=Delimited(   )   
  固定宽度                   文件中的字段为固定长度      Char   Width   
10
 
还有,在读取的数据中要是碰到 
19" 液晶要替换为 19""或19''
posted on 2007-09-29 14:56  DODONG  阅读(3287)  评论(1编辑  收藏  举报