экспорт bcp csv только с powershell и вложенным l oop по нескольким критериям - PullRequest
0 голосов
/ 30 марта 2020
  1. Мой следующий windows -пакетный сценарий и сценарий powershell работают нормально, но мне нужна помощь, чтобы использовать только сценарий powershell вместо того, чтобы комбинировать windows batch и powershell
  2. как создать сценарий powershell с несколькими условиями, используемыми для l oop, скажем, я хочу, чтобы выходной файл bcp был разделен на "date", а также на "region"

windows пакетный скрипт:

ECHO OFF
REM PUT ALL VARIABLES START HERE,  DATE FORMAT 'DD-MMM-YYYY'
SET LOCAL
SET BCP_EXPORT_TABLE=TABLE1

SET WORK_DIR=D:\SQL DB BACKUP\
SET SERVER_NAME=SERVER1

SET DATE_COLUMN=Date

REM ==========END OF VAR DECLARE===========
ECHO OFF
FOR /F %%d IN ('powershell -NoProfile -ExecutionPolicy Bypass -File daterangev2.ps1 %DATE_START% %DATE_STOP%') DO (
BCP "DECLARE @colnames VARCHAR(max);SELECT @colnames = COALESCE(@colnames + ';', '') + column_name from DB1.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='%BCP_EXPORT_TABLE%'; select @colnames;" queryout "%WORK_DIR%HeadersOnly.csv" -c -t";" r\n -T -S%SERVER_NAME%

BCP "SELECT g.* FROM dbo.[%BCP_EXPORT_TABLE%] g WHERE g.[%DATE_COLUMN%] >='%%d' AND g.[%DATE_COLUMN%] <= '%%d'" queryout "%WORK_DIR%1.CSV" -c  -t";" -r\n  -T -S%SERVER_NAME%
ECHO OFF

COPY /B "%WORK_DIR%HeadersOnly.csv"+"%WORK_DIR%1.CSV"  "%WORK_DIR%__RESULT.CSV"
D:
CD "%WORK_DIR%"
DEL "%BCP_EXPORT_TABLE% (%DATE_START% to %DATE_STOP%)".CSV

REN __RESULT.CSV "%BCP_EXPORT_TABLE% (%%d)".CSV
DEL HeadersOnly.csv
DEL 1.CSV
)

CD C:
C:
CMD /K
ECHO ON

скрипт powershell:

    param(
  [datetime]$DateStart,
  [datetime]$DateStop
)

$DateStart = Read-Host "Date start?"
$DateStop = Read-Host "Date stop?"



$startDate = get-date $DateStart
$stopDate = get-date $DateStop

for ( $i = $startDate; $i -lt $stopDate+1; $i=$i.AddDays(1) )  { 
    #$i.ToShortDateString()
    [datetime]::parseexact($i.ToShortDateString(), 'dd-MMM-yy', $null).ToString('yyyyMMdd')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...