合并撇号作为第一个字符

时间:2014-02-12 08:53:33

标签: sql sql-server merge

我有一个从平面文件数据导入并合并它们的脚本。我每天有大约190'000行数据合并。

我需要大约30分钟。现在我花了2个多小时。以“

”加入公司的新人
't Hart

因为给定名称造成了麻烦

错误就像这样

  

代码:0xC0202092
  来源:数据流任务1来源 - zuko_GLDAP_DUMP_csv [1]
  说明:处理文件“D:... \ NameOfTheFlatFile.csv”时发生错误

     

数据行82396.结束错误错误:2014-02-12 05:00:41.61
  代码:0xC0047038来源:数据流任务1 SSIS。

     

管道

     

描述:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。组件“Source - zuko_GLDAP_DUMP_csv”(1)上的PrimeOutput方法返回错误代码0xC0202092。
  当管道引擎调用PrimeOutput()时,组件返回失败代码。

     

失败代码的含义由组件定义,但错误是致命的,管道停止执行。

     

在此之前可能会发布错误消息,其中包含有关失败的更多信息。结束错误DTExec:程序包执行返回DTSER_FAILURE(1)。开始时间:05:00:01完成时间:05:00:42经过:40.235秒。包执行失败。步骤失败

所以我进入文件并看到了名称('t Hart)。

我这样做(不是整个代码)

MERGE person AS TARGET
USING temp_person AS SOURCE
ON (TARGET.per_pid = SOURCE.per_pid)
WHEN MATCHED THEN
    UPDATE SET 
    TARGET.[per_name] = SOURCE.[per_name]
WHEN NOT MATCHED BY TARGET THEN
    INSERT (
        [per_name]
    )
    VALUES( 
        SOURCE.[per_name]
    );

我该如何解决这个问题?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

希望这有帮助。

这有一个线索,sql注入是解决方案btw的唯一方法。

USE [adventureworks2008]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[name](
        [name] [nvarchar](25) NOT NULL,

) ON [PRIMARY]

GO

select * from name

insert into name values ('James ''t Hart ')

SELECT REPLACE(name , '''', '''''') from name