Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: SQL e a Teoria de Conjuntos

_Créditos das imagens: Grok ### 🚀 Você sabia? SQL e a Teoria de Conjuntos estão mais conectados do que imagina! A linguagem SQL (Structured Query Language) tem suas raízes na teoria de conjuntos, um conceito matemático que trata de coleções de objetos. Em bancos de dados relacionais, cada tabela é um conjunto de linhas (ou tuplas), e operações como SELECT, JOIN, UNION e INTERSECT são inspiradas em operações como união (∪), interseção (∩) e diferença (-). Vamos explorar como isso funciona? 👇 --- ### 🔍 Principais Operações de Conjuntos no SQL Imagine duas tabelas simples: Clientes (Conjunto A): ``` +----+-------+ | ID | Nome | +----+-------+ | 1 | Ana | | 2 | João | | 3 | Maria | +----+-------+ ``` Pedidos (Conjunto B): ``` +----+-----------+ | ID | Cliente_ID| +----+-----------+ | 1 | 1 | | 2 | 2 | | 3 | 1 | +----+-----------+ ``` #### 1. União (UNION) - O que faz: Junta tudo de A e B, sem duplicatas (A ∪ B). - Exemplo: ```sql SELECT id FROM cli...

Windows® PowerShell® "Script" para sincronização do Repositório do Protheus


Hoje Postarei uma nova dica de como criar um "script", utilizando o Windows® PowerShell® para sincronizar os "Repositórios de Objetos" do Protheus entre o ambiente de desenvolvimento e o de produção.

Crie o arquivo syncApos.ps1 e, utilizando um editor de texto de sua preferência (Notepad, Notepad++ ou Edit, etc.), inclua o código abaixo e altere-o de forma a adequar-se às suas necessidades.

Tendo feito isso basta criar um agendamento utilizando o Agendador de Tarefas do Windows® ("Task Manager") e seus repositórios serão sincronizados.

$find = ""
$pathbin = "d:\totvs\p10\bin"
$iniFile = "totvs*.ini"
$rpospath = "d:\totvs\p10\rpos\"
$rposmatch = get-childitem -path $rposPath
$rpoName = "tttp101.rpo"
foreach( $pathrpo in $rposmatch )
{
$pathrpoName = $pathrpo.Name
$find00 = "sourcepath=d:\\totvs\\p10\\rpos\\$pathrpoName\\rpo00\\"
$find01 = "sourcepath=d:\\totvs\\p10\\rpos\\$pathrpoName\\rpo01\\"
$find02 = "sourcepath=d:\\totvs\\p10\\rpos\\$pathrpoName\\rpo02\\"
$find03 = "sourcepath=d:\\totvs\\p10\\rpos\\$pathrpoName\\rpo03\\"
$find04 = "sourcepath=d:\\totvs\\p10\\rpos\\$pathrpoName\\rpo04\\"
$match = get-childitem -path $pathbin -include $iniFile -recurse | select-string $find00 -list
if ( $match -match $find00 )
{
$find = $find00
$TargetFilePathRpoSync = "d:\totvs\p10\rpos\$pathrpoName\rpo01\"
}
else
{
$match = get-childitem -path $pathbin -include $iniFile -recurse | select-string $find01 -list
if ( $match -match $find01 )
{
$find = $find01
$TargetFilePathRpoSync = "d:\totvs\p10\rpos\$pathrpoName\rpo02\"
}
else
{
$match = get-childitem -path $pathbin -include $iniFile -recurse | select-string $find02 -list
if ( $match -match $find02 )
{
$find = $find02
$TargetFilePathRpoSync = "d:\totvs\p10\rpos\$pathrpoName\rpo03\"
}
else
{
$match = get-childitem -path $pathbin -include $iniFile -recurse | select-string $find03 -list
if ( $match -match $find03 )
{
$find = $find03
$TargetFilePathRpoSync = "d:\totvs\p10\rpos\$pathrpoName\rpo04\"
}
else
{
$find = $find04
$TargetFilePathRpoSync = "d:\totvs\p10\rpos\$pathrpoName\rpo00\"
}
}
}
}
$replace = "sourcepath="
if( !$TargetFilePathRpoSync.endsWith("\")) { $TargetFilePathRpoSync+="\" }
$replace += $TargetFilePathRpoSync
$TargetFilePathRpoSync += $rpoName
$SourceFilePathRpoSync = "\\100.0.9.75\p10rpo$\$pathrpoName\rpo00\"
$SourceFilePathRpoSync += $rpoName
if((get-item $SourceFilePathRpoSync).lastWriteTime -gt (get-item $TargetFilePathRpoSync).lastWriteTime)
{
copy-item $SourceFilePathRpoSync $TargetFilePathRpoSync -force
get-childitem -path $pathbin -include $iniFile -recurse | select-string $find -list |% { (get-content $_.Path) |% { $_ -replace $find, $replace } | set-content $_.Path ; while( (Get-Item $_.Path).Length -eq 0 ){ set-content $_.Path } }
}
}

Comentários

Postagens mais visitadas