Izi, monga mukumvetsetsa, ndi kuyesa kale kuchokera ku Unix version.
Kukweza mafayilo
Mu mtundu wa Windows, ntchito iliyonse idatsagana ndi kafukufuku: tidathamanga sqlcmd, tidalandira nkhanza zamtundu wina mu fayilo yotulutsa, ndikuyika fayiloyi ku mbale yowerengera. Mwamwayi, seva ya SQL inagwira ntchito pa seva yomweyo monga Jenkins, zidachitidwa motere:
CREATE procedure AuditUpload
@id int, @filename varchar(256)
as
set nocount on
declare @sql varchar(max)
CREATE TABLE #multi (filer NVARCHAR(MAX))
set @sql='BULK INSERT #multi FROM '''+@filename
+''' WITH (ROWTERMINATOR = '' '',CODEPAGE = ''ACP'')'
exec (@sql)
select @sql=filer from #multi
update JenkinsAudit set multiliner=@sql where ID=@id
return
Chifukwa chake, timameza fayilo ya BCP kwathunthu ndikukankhira m'munda wa nvarchar(max) wa tebulo lowerengera. Zachidziwikire, dongosolo lonseli lidasokonekera, chifukwa m'malo mwa seva ya SQL ndidapeza RDS, ndipo BULK INSERT sigwira ntchito konse kudzera pa UNC chifukwa choyesera kutenga loko pafayilo, ndipo ndi RDS izi nthawi zambiri sizingachitike. chiyambi pomwe. Chifukwa chake ndidaganiza zosintha dongosolo, ndikusunga mzere wowerengera ndi mzere:
CREATE TABLE AuditOut (
ID int NULL,
TextLine nvarchar(max) NULL,
n int IDENTITY(1,1) PRIMARY KEY
)
Ndipo lembani mu gome ili motere:
function WriteAudit([string]$Filename, [string]$ConnStr,
[string]$Tabname, [string]$Jobname)
{
# get $lastid of the last execution -- ΠΏΡΠΎΡΠΊΠΈΠΏΠ°Π½ΠΎ Π΄Π»Ρ ΡΡΠ°ΡΡΠΈ
#create grid and populate it with data from file
$audit = Get-Content $Filename
$DT = new-object Data.DataTable
$COL1 = new-object Data.DataColumn;
$COL1.ColumnName = "ID";
$COL1.DataType = [System.Type]::GetType("System.Int32")
$COL2 = new-object Data.DataColumn;
$COL2.ColumnName = "TextLine";
$COL2.DataType = [System.Type]::GetType("System.String")
$DT.Columns.Add($COL1)
$DT.Columns.Add($COL2)
foreach ($line in $audit)
{
$DR = $dt.NewRow()
$DR.Item("ID") = $lastid
$DR.Item("TextLine") = $line
$DT.Rows.Add($DR)
}
# write it to table
$conn=new-object System.Data.SqlClient.SQLConnection
$conn.ConnectionString = $ConnStr
$conn.Open()
$bulkCopy = new-object ("Data.SqlClient.SqlBulkCopy") $ConnStr
$bulkCopy.DestinationTableName = $Tabname
$bulkCopy.BatchSize = 50000
$bulkCopy.BulkCopyTimeout = 0
$bulkCopy.WriteToServer($DT)
$conn.Close()
}
Kuti musankhe zomwe zili, muyenera kusankha ndi ID, kusankha mu dongosolo n (chidziwitso).
M'nkhani yotsatira ndifotokoza mwatsatanetsatane momwe zonsezi zimagwirizanirana ndi Jenkins.