Chcę zapisać plik w zdalnej bazie danych z lokalnego komputera, na którym znajduje się plik. Chcę to osiągnąć za pomocą polecenia BCP. Jak można to osiągnąć?

Moje zapytanie jest podobne do poniższego:

INSERT INTO ExcelFileUploadedData(
    Project, 
    SubProject, 
    LogicalName,FileName, 
    FileData) 

SELECT 
    'Sample',
    'Sample',
    'BP',
    '1.xls',
    * 
FROM OPENROWSET(BULK N'D:\File\File1.xls.zip', SINGLE_BLOB) rs
0
Akanksha 19 grudzień 2019, 17:01
Wydaje się, że jest to właściwa składnia zakładając, że chcesz po prostu przechowywać plik binarny w polu varbinary(max) o nazwie „FileData”. Jaki błąd otrzymujesz?
 – 
Josh Jay
19 grudzień 2019, 17:38
Nie sądzę, że można to osiągnąć, ponieważ ładowanie BULK przy użyciu OPENROWSET wymaga pliku na lokalnym serwerze bazy danych.
 – 
PeterHe
19 grudzień 2019, 17:52

1 odpowiedź

Możesz tego spróbować

    SET @TableQuery='CREATE TABLE [temp1](
             [Id] [int] IDENTITY(1,1) NOT NULL,
             Project [NVARCHAR(50)], 
             SubProject [NVARCHAR(50)], 
             LogicalName [NVARCHAR(50)],
             FileName [NVARCHAR(50)], 
             FileData [NVARCHAR(50)],
             CONSTRAINT [PK_temp1] PRIMARY KEY CLUSTERED 
             (
                [Id] ASC
              )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
              ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
                                                '
             EXEC(@TableQuery)  

             DECLARE @params NVARCHAR(max)
             SET @params = N'@uploadData SINGLE_BLOB readonly'

             SET @BulkInsertQuery =N'INSERT INTO [temp1] ( Project,            SubProject,LogicalName,FileName,FileData) 
select * from @uploadData';          
             print @BulkInsertQuery
             EXEC sp_executesql @BulkInsertQuery, @params, @uploadData

    // Enter Records from temp table into real table

             INSERT INTO ExcelFileUploadedData(
                Project, 
                SubProject, 
                LogicalName,FileName, 
                FileData) 
             SELECT 
                'Sample',
                'Sample',
                'BP',
                '1.xls',
                * 
         FROM [temp1]
0
Rajan Mishra 19 grudzień 2019, 17:48