Могу ли я получить файл как есть (вместе с тем же именем) в другой папке после использования команды +1? - PullRequest
0 голосов
/ 18 марта 2020

Проект: мне нужно выбрать один текстовый файл из одной папки, а затем, удалив самую первую строку этого текста, вставить данные этого файла в таблицу sql. Для этого у меня есть нижеупомянутый код и вопросы.

    Exec sp_configure 'xp_cmdshell',1
    reconfigure
    exec xp_cmdshell 'robocopy *.txt D:\DA\Nikhil\Raw D:\DA\Nikhil\Filter /XF *att*.txt'
    exec xp_cmdshell 'move D:\DA\Nikhil\Raw\*.txt D:\DA\Nikhil\ProcessedData'
    exec xp_cmdshell 'more +1 D:\DA\Nikhil\Filter\*.txt > D:\DA\Nikhil\To_be_processed\.txt'
    exec xp_cmdshell 'del D:\DA\Nikhil\Filter\*.txt'

--CREATE TABLE #File
--(
--FileName    SYSNAME,
--Depth       TINYINT,
--IsFile      TINYINT
--);

--INSERT INTO #File (FileName, Depth, IsFile)
--EXEC xp_DirTree N'D:\DA\Nikhil\To_be_processed',1,1

--SELECT top 1 FileName, Depth, IsFile
--FROM #File
--WHERE IsFile = 1
--ORDER BY CAST(SUBSTRING(FileName, PATINDEX('%[0-9]%', FileName), 20) As nvarchar) DESC

Вопрос 1 :

Если вы go через код строки ниже,

exec xp_cmdshell 'more +1 D:\DA\Nikhil\Filter\80 - extract_CES_SAE_v3_p00479029ytf_20200203013316.txt > D:\DA\Nikhil\To_be_processed\'

Я пытаюсь удалить самую первую строку моего текстового файла, и после удаления я перемещаю этот файл в другую папку (т. Е. To_be_processed). Но это не позволяет мне дать его, так как это имя из папки фильтра. Так есть ли способ получить это? потому что мой следующий вопрос зависит от этого имени файла.

Вопрос 2 :

В моем первом вопросе я жестко закодировал это имя файла, но я хочу запустить свой код ежедневно, поэтому мне нужно это имя файла. Предположим, я получу это имя файла, но мой следующий код,

CREATE TABLE #File
(
FileName    SYSNAME,
Depth       TINYINT,
IsFile      TINYINT
);

INSERT INTO #File (FileName, Depth, IsFile)
EXEC xp_DirTree N'D:\DA\Nikhil\To_be_processed',1,1

SELECT top 1 FileName, Depth, IsFile
FROM #File
WHERE IsFile = 1
ORDER BY CAST(SUBSTRING(FileName, PATINDEX('%[0-9]%', FileName), 20) As nvarchar) DESC

Я получаю вывод как 80 - extract_CES_SAE. Используя это имя (некоторый шаблон этого файла), я должен вставить только этот файл в таблицу SQL. Поэтому мой вопрос заключается в следующем: как я могу вставить этот файл в таблицу SQL из шаблона считывания этого имени файла.

Имена файлов являются динамическими c, они будут постепенно изменяться. Предположим, что сегодняшнее имя файла начинается с 80, затем в следующем файле будут использоваться 81, 82, et c.

Так что кто-нибудь может мне помочь с этими двумя вопросами, потому что они зависят друг от друга .

имя таблицы: extract_CES_SAE

...