Hi I am having problem with the stored procedure that I created. I got a syntax error with Incorrect syntax near '@path' .
If I put the absolute path 'J:\\TestCSV\\ImportData.csv' I don't received any error. But if I declare parameters, I received this error that I mentioned above. Here's my stored procedure. Hoping for your helping hand.
Create PROCEDURE [dbo].[FileUpload]
As
BEGIN
DECLARE @path VARCHAR(256); -- path
DECLARE @fileName VARCHAR(256); -- filename
DECLARE @fileDate VARCHAR(20); -- used for file date
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) ;
SET @fileName = 'ImportData' + '_' + @fileDate + '.csv';
SET @path = 'J:\TestCSV\' + @fileName;
BULK
INSERT [dbo].[temp_Cemetery]
--FROM 'E:\CSVTest\ImportDataYYYYMMDD.csv'
FROM @path -- Error Here Incorrect syntax near '@path'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
END
You have to use a string literal for some reason. You'll probably have to use dynamic sql eg
CREATE PROCEDURE [dbo].[FileUpload]
AS
BEGIN
DECLARE @path VARCHAR(256); -- path
DECLARE @fileName VARCHAR(256); -- filename
DECLARE @fileDate VARCHAR(20); -- used for file date
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) ;
SET @fileName = 'ImportData' + '_' + @fileDate + '.csv';
SET @path = 'J:\\TestCSV\\' + @fileName;
DECLARE @sql varchar(8000)
SET @sql = 'BULK INSERT [dbo].[temp_Cemetery]
FROM ''' + @path + '''
WITH
(
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n''
)'
EXEC (@sql)
END
The issue is you needed to escape the backslash near the quote:
SET @path = 'J:\\TestCSV\\' + @fileName;
This is because the backslash is a special character and since you escaped the single quote it treated the rest of the statement as part of the string. I fixed it for you below.
Create PROCEDURE [dbo].[FileUpload]
As
BEGIN
DECLARE @path VARCHAR(256); -- path
DECLARE @fileName VARCHAR(256); -- filename
DECLARE @fileDate VARCHAR(20); -- used for file date
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) ;
SET @fileName = 'ImportData' + '_' + @fileDate + '.csv';
SET @path = 'J:\\TestCSV\\' + @fileName;
BULK
INSERT [dbo].[temp_Cemetery]
--FROM 'E:\CSVTest\ImportDataYYYYMMDD.csv'
FROM @path -- Error Here Incorrect syntax near '@path'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
END
You need to add quotes to the path so that your FROM
clause reads it as 'J:\\TestCSV\\ImportData_20170104.csv'
instead of J:\\TestCSV\\ImportData_20170104.csv
Create PROCEDURE [dbo].[FileUpload]
As
BEGIN
DECLARE @path VARCHAR(256); -- path
DECLARE @fileName VARCHAR(256); -- filename
DECLARE @fileDate VARCHAR(20); -- used for file date
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) ;
SET @fileName = 'ImportData' + '_' + @fileDate + '.csv';
SET @path = '''J:\TestCSV\' + @fileName +'''';
BULK
INSERT [dbo].[temp_Cemetery]
--FROM 'E:\CSVTest\ImportDataYYYYMMDD.csv'
FROM @path -- Error Here Incorrect syntax near '@path'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
END
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.