【发布时间】:2016-09-21 10:32:45
【问题描述】:
我知道这很脏,但是有没有办法以这种确切的格式发送 csv 数据(回车分隔):
1,2,"Bla1"
3,4,"Bla2"
到存储过程并将其插入到#temp 表中。
骨架:
IF EXISTS (SELECT *
FROM sys.objects
WHERE type = 'P' AND name = 'USP_Test')
DROP PROCEDURE USP_Test
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE USP_Test
@CsvData NVARCHAR(MAX)
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #Temp
(
Number1 FLOAT,
Number2 FLOAT,
String NVARCHAR(255)
)
-- insert @CsvData into #Temp
END
我喜欢这种情况下的表值参数,但我只能控制发送nvarchar。
【问题讨论】:
-
有一种方法,但您必须格外小心输入。至少你知道它很脏……
-
对于最后一列,如果字段值中有引号会发生什么?是不是翻倍了? 1,2,"Joe ""尴尬的人""Bloggs"
-
@Martin - 我刚刚把它做成了 csv-ish。这只是一个例子。我有权阻止“。
-
@ZoharPeled 您引用的可能重复项不适用于我的场景。
标签: sql-server tsql stored-procedures sql-server-2014