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
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''
在文件目录下创建一个名为 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''