Sql server 靠近'的语法不正确;c:';

Sql server 靠近'的语法不正确;c:';,sql-server,Sql Server,这是一个测试SP i的样本,创建于 当我运行它时,“c:”附近的语法不正确。” 有人知道吗 变化 set @path = 'c:temp\TextImpoted0.txt' 到 \是重要的更改 set @path = 'c:temp\TextImpoted0.txt' 到 \很重要似乎有几个问题。首先,变量path从未声明过,它也被错误地称为path1,需要更改。其次,需要引用bulk_cmd字符串中的一些值 应能正常工作的更正版本: CREATE PROCEDURE [dbo].[Text

这是一个测试SP i的样本,创建于

当我运行它时,“c:”附近的语法不正确。”

有人知道吗

变化

set @path = 'c:temp\TextImpoted0.txt'

\
是重要的

更改

set @path = 'c:temp\TextImpoted0.txt'


\
很重要

似乎有几个问题。首先,变量
path
从未声明过,它也被错误地称为
path1
,需要更改。其次,需要引用
bulk_cmd
字符串中的一些值

应能正常工作的更正版本:

CREATE PROCEDURE [dbo].[TextImpotedSP2]
AS
DECLARE @path NVARCHAR(max)
SET @path = 'c:\temp\TextImpoted0.txt'

SET NOCOUNT ON;
DECLARE @bulk_cmd NVARCHAR(max);

SET @bulk_cmd = '
BULK INSERT TextImpoted 
FROM '''+ @path + ''' 
WITH 
    (
       FIELDTERMINATOR = ' + ''';''' +  ',
       ROWTERMINATOR = ' + '''\n'''+ ' 
    )';

--PRINT @bulk_cmd
EXEC sp_executesql @bulk_cmd
此外,路径字符串
'c:temp\textImported0.txt'
可能应该是
'c:\temp\textImported0.txt'
,因为如果使用相对路径,可能会得到意外的结果

编辑:将解决方案添加到作为答案发布的后续问题

CREATE PROCEDURE [dbo].[TextImpoted01]
AS
SET NOCOUNT ON;

DECLARE @SQL NVARCHAR(100) 
SELECT TOP (1) @SQL = total  FROM DealCounter

DECLARE @path NVARCHAR(max)
SET @path = 'c:\temp\TextImpoted'+ @SQL + '.txt'    

DECLARE @bulk_cmd NVARCHAR(max);    
SET @bulk_cmd = '
BULK INSERT TextImpoted 
FROM '''+ @path + ''' 
WITH 
    (
       FIELDTERMINATOR = ' + ''';''' +  ',
       ROWTERMINATOR = ' + '''\n'''+ ' 
    )';

--PRINT @bulk_cmd
EXEC sp_executesql @bulk_cmd

似乎有几个问题。首先,变量
path
从未声明过,它也被错误地称为
path1
,需要更改。其次,需要引用
bulk_cmd
字符串中的一些值

应能正常工作的更正版本:

CREATE PROCEDURE [dbo].[TextImpotedSP2]
AS
DECLARE @path NVARCHAR(max)
SET @path = 'c:\temp\TextImpoted0.txt'

SET NOCOUNT ON;
DECLARE @bulk_cmd NVARCHAR(max);

SET @bulk_cmd = '
BULK INSERT TextImpoted 
FROM '''+ @path + ''' 
WITH 
    (
       FIELDTERMINATOR = ' + ''';''' +  ',
       ROWTERMINATOR = ' + '''\n'''+ ' 
    )';

--PRINT @bulk_cmd
EXEC sp_executesql @bulk_cmd
此外,路径字符串
'c:temp\textImported0.txt'
可能应该是
'c:\temp\textImported0.txt'
,因为如果使用相对路径,可能会得到意外的结果

编辑:将解决方案添加到作为答案发布的后续问题

CREATE PROCEDURE [dbo].[TextImpoted01]
AS
SET NOCOUNT ON;

DECLARE @SQL NVARCHAR(100) 
SELECT TOP (1) @SQL = total  FROM DealCounter

DECLARE @path NVARCHAR(max)
SET @path = 'c:\temp\TextImpoted'+ @SQL + '.txt'    

DECLARE @bulk_cmd NVARCHAR(max);    
SET @bulk_cmd = '
BULK INSERT TextImpoted 
FROM '''+ @path + ''' 
WITH 
    (
       FIELDTERMINATOR = ' + ''';''' +  ',
       ROWTERMINATOR = ' + '''\n'''+ ' 
    )';

--PRINT @bulk_cmd
EXEC sp_executesql @bulk_cmd

@萨利赫,不客气。如果我的回答解决了你的问题,请考虑将它标记为“接受”。萨利赫,不客气。如果我的答案解决了你的问题,请考虑将它标记为接受。