sql >> Databasteknik >  >> RDS >> Sqlserver

MSSQL:uppdatera matchande rader från den uppladdade filen

Detta är ett mycket enklare tillvägagångssätt för att komma in i din röravgränsade data. Du hittar din tabellliknande data inom #temp2. Från och med nu borde det vara enkelt att UPPDATERA ,INSERT eller SAMMANSLUTNING dina data till ditt mål.

Observera:Jag kunde bara gissa innebörden av dina kolumner, så kolumnnamnen kan vara skräp...

SKAPA TABELL #temp1(WHOLEROW VARCHAR(8000));INSERT INTO #temp1-VÄRDEN ('F20160323-1000|FSI|BISCOCHO|LEVERAD|42317|||||GINA T|HYRESGÅST|42311'), ('F20160323-1001|FSI|MARTINNE|LEVERAD|42314|||||MERLIE STRADA|IN LAW|42311'),('F20160323-1002|FSI|MANALO|LEVERAD|42313|||TENANT|GINA A |42311') ||GINA B|TENANT|42311'),('F20160323-1005|FSI|NINA|LEVERAD|42318|||||MERLIE STRADA|IN LAW|42311');;WITH Splitted(AsXml) AS( SELECT CAST( '' + REPLACE(t1.WHOLEROW,'|','') + '' AS XML) FROM #temp1 AS t1)SELECT AsXml.value('x[ 1]','varchar(max)') AS ID ,ID_Splitted.* ,AsXml.value('x[2]','varchar(max)') AS FSI_Field ,AsXml.value('x[3]', 'varchar(max)') AS CAPTION ,AsXml.value('x[4]','varchar(max)') AS STATUS ,AsXml.value('x[5]','varchar(max)') AS NUMBER ,AsXml.value('x[6]','varchar(max)') AS Fld1 ,AsXml.value(' x[7]','varchar(max)') AS Fld2 ,AsXml.value('x[8]','varchar(max)') AS Fld3 ,AsXml.value('x[9]','varchar (max)') AS Fld4 ,AsXml.value('x[10]','varchar(max)') AS TARGET ,AsXml.value('x[11]','varchar(max)') AS TARGET_TYPE , AsXml.value('x[12]','varchar(max)') AS TARGET_NUMBERINTO #temp2FROM SplittedCROSS APPLY(SELECT LEFT( AsXml.value('x[1]','varchar(max)'),1) AS FirstLetter ,CAST(SUBSTRING(AsXml.value('x[1]','varchar(max)'),2,8) AS DATE) AS IncludedDate ,CAST(SUBSTRING( AsXml.value('x[1]', 'varchar(max)'),11 100) AS INT) AS IncludedNumber) AS ID_Splitted;SELECT * FROM #temp2;DROP TABLE #temp2;DOP TABLE #temp1; 

Resultatet

ID FirstLetter IncludedDate InclNmbr FSI CAPTION STATUS NUMBER TARGET TYPE NUMBERF20160323-1000 F 2016-03-23 ​​ 1000 FSI BISCOCHO DELIVERED 42317 GINA T TENANT 42311F20160323-1001 F 2016-03-23 ​​ 1001 FSI MARTINNE DELIVERED 42314 MERLIE STRADA IN LAW 42311F20160323-1002 F 2016-03-23 ​​ 1002 FSI MANALO DELIVERED 42313 GINA A TENANT 42311F20160323-1004 F 2016-03-23 ​​ 1004 FSI HAMOY CAJAYONDELIVERED 42311 MERLIE QTRADA IN LAW 42311F20160323-1003 F 2016-03-23 ​​ 1003 FSI FRANCISCA DELIVERED 42312 GINA B HYRESGÄST 42311F20160323-1005 F 2016-03-23 ​​1005 FSI NINA LEVERERAS 42318 MERLIE STRADA IN LAW 42311 



  1. Datatrunkering:Data för långa för kolumn "logotyp" på rad 1

  2. Oracle - bryt datum i kvartal

  3. Hur man kör en fråga med en join över två databaser med PDO

  4. Heroku Connect med Cakephp v3.0.12