DOS скрипт для чтения одного файла в другой - PullRequest
1 голос
/ 12 октября 2011

Я обнаружил, что мне не может быть предоставлена ​​роль BULKADMIN или SYSADMIN на моей размещенной базе данных sql server db, и я пытался обойти операцию массовой вставки, создав файл .sql, содержащий операторы вставки. Операторы вставки создаются с помощью макроса xls, поэтому я выполняю некоторую часть ручной работы с программой. Итак, позвольте мне нарисовать проблему здесь.

У меня есть текстовый файл со следующим содержимым -

10/05/2011 01:21 PM 1-16332-1008261.psa 
10/05/2011 01:21 PM 1-16332-1011698.psa 
10/05/2011 01:21 PM 1-16332-1023151.psa 
10/05/2011 01:21 PM 1-16332-1035695.psa 
10/07/2011 03:36 PM 1-16332-1023193.psa 
10/07/2011 03:36 PM 1-16332-1035694.psa 
6 File(s) 8,933,754 
2 Dir(s) 1,675,268,096 free

То, чего я хочу достичь в моем конечном выходном файле, это -

insert into xyz.abcd values('10/05/2011', '1-16332-1008261.psa');
insert into xyz.abcd values('10/05/2011', '1-16332-1011698.psa');
insert into xyz.abcd values('10/05/2011', '1-16332-1023151.psa');
insert into xyz.abcd values('10/05/2011', '1-16332-1035695.psa');
insert into xyz.abcd values('10/07/2011', '1-16332-1023193.psa');
insert into xyz.abcd values('10/07/2011', '1-16332-1035694.psa');
go

Пожалуйста, обратите внимание, что последние две строки из моего входного текстового файла должны быть помечены в моем конечном выходном файле sql. Это своего рода автоматизация макроса xls, который я сейчас выполняю вручную с помощью сценариев dos, в которых «вставка в значения xyz.abcd» считается константной строкой, которая записывается в каждую новую строку до того, как будут прочитаны фактическая дата и имя файла из файла. , Я назову свой окончательный выходной файл как .sql и выполню его удаленно с моего компьютера. Может кто-нибудь, пожалуйста, помогите мне, если это может быть выполнимо в программировании DOS или нет.

Я пытался представить похожую проблему в другом посте, который я пытаюсь удалить, но не могу этого сделать. Думаю, я не объяснил другого правильно.

Я знаю, что могу перенаправить строку как литерал в файл с помощью команды echo, но проблема в том, как мне прочитать часть строки из одного файла и поместить их в новый файл.

Спасибо!

1 Ответ

2 голосов
/ 12 октября 2011

пожалуйста, поместите следующий код в блокнот и сохраните его как командный файл CMD (например, Convert2SQLfile.cmd).Затем запустите его из командной строки с 3 параметрами, а:

  • 1-й параметр содержит путь к исходному файлу, из которого будут считываться данные
  • 2-й параметр содержит путь к файлу назначения, к которому данныебудет сохранено
  • 3-й параметр содержит имя таблицы, которая должна быть сохранена в команде SQL вместо "xyz.abcd", который вы указали в запросе

Надеюсь, это поможет.

С уважением,
Standa

    @echo off
    SetLocal

    SET App.SourceFile=%1
    SET App.DestinationFile=%2
    SET App.Table=%3


    FOR /f "usebackq tokens=1,4" %%i IN (`type %%App.SourceFile%%`) DO (
        IF #%%j# NEQ ## (
            IF #%%j# NEQ #free# (
                ECHO insert into %App.Table% values ^('%%i', '%%j'^); >> %App.DestinationFile%
            )
        )
    )

    ECHO go >> %App.DestinationFile%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...