在批量插入的字段值中处理字段终止符

时间:2012-12-11 02:55:53

标签: sql sql-server sql-server-2008 tsql parsing

这是我们将日志插入数据库的代码:

SET @SQL = 'BULK INSERT #tbl_Temp FROM '
        + ''''
        + @PathFileName
        + ''''
        + ' WITH (FIELDTERMINATOR ='
        + ' ''|''' 
        + ','
        + ' ROWTERMINATOR = '
        + ' ''|\n''' 
        + ','
        + ' CHECK_CONSTRAINTS, KEEPIDENTITY, MAXERRORS = 30)'

基本上,我们批量插入的日志文件是管道符分隔的,上面的代码工作正常,但是如果一个字段的值中包含管道|,例如加密字段,则此SQL代码无法处理它。

解决此类问题的方法有哪些?

如果BULK INSERT不具备,那么在不修改日志格式的情况下应该是什么解决方案,因为它已经在生产中。

1 个答案:

答案 0 :(得分:0)

我们所做的是指定一个多字符分隔符,例如'!@#$%^& *()',它运行正常。但是,如果您对生成日志文件的软件具有控制权,那么这当然是