Blog Layout

XPCMD_SHELL Move & Load

E.DIN Editor • Nov 17, 2021

  XPCMD_SHELL Move & Load Data from Directory

USE [myETL]

GO

/****** Object:  StoredProcedure [dbo].[LoadMyRxData]    Script Date: 10/22/2021 ******/

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[LoadMyRxData]') AND type in (N'P', N'PC'))

DROP PROCEDURE [dbo].[LoadMyRxData]

GO

/****** Object:  StoredProcedure [dbo].[LoadMyRxData]    Script Date: 10/22/2021 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE procedure [dbo].[LoadMyRxData]

AS

exec xp_cmdshell 'move \\DatabaseServer07\FTP\DataReporting\*PatDetails* \\DatabaseServer01\F\docs\DbName\MyRxData\'--,no_output

--Load Raw files

declare @dir table(itm varchar(500),ID int identity)

declare @pth varchar(1000) = '\\DatabaseServer01\f\docs\DbName\MyRxData\'

declare @cmd varchar(max)

declare @fl varchar(1000)

delete from @dir

insert @dir(itm)

exec xp_cmdshell 'dir /b \\DatabaseServer01\f\docs\DbName\MyRxData\*PatDetails*dat'


while (select COUNT(*) from @dir where isnull(itm,'File Not Found')<>'File Not Found')>0

begin


select top 1 @fl = itm from @dir where itm is not null order by itm

if(OBJECT_ID('tempdb..##FL_MyRxData') is not null) drop table ##FL_MyRxData

create table ##FL_MyRxData(dta varchar(max))

set @cmd='bulk insert ##FL_MyRxData from '''+@pth+@fl+''' with(RowTerminator=''0x0a'')'

exec(@cmd)

if(OBJECT_ID('tempdb..##PharmRx') is not null) drop table ##PharmRx

select top 1 @cmd= dta from ##FL_MyRxData where CHARINDEX('CLIENT_ID',dta)<>0

set @cmd=REPLACE(@cmd,' ','')

set @cmd=REPLACE(@cmd,'&','')

set @cmd=REPLACE(@cmd,'/','')

set @cmd=REPLACE(@cmd,',','')

set @cmd=REPLACE(@cmd,'|',' varchar(1000),')

if(RIGHT(@cmd,1)<>'|') set @cmd = @cmd+' varchar(1000)'

set @cmd = 'create table ##PharmRx('+@cmd+')'

exec(@cmd)

set @cmd='bulk insert ##PharmRx from '''+@pth+@fl+''' with(RowTerminator=''0x0a'',fieldterminator=''|'')'

exec(@cmd)

delete from ##PharmRx where CLIENT_ID='CLIENT_ID'

alter table ##PharmRx add FLENAME varchar(500)

update ##PharmRx set FLENAME=@fl


--prevent loading duplicate records

delete from ##PharmRx where

CLIENT_ID+PHARMACY+RX_NBR+FILL_NBR+CLAIM_STATUS+ADJUD_DT

in (select CLIENT_ID+PHARMACY+RX_NBR+FILL_NBR+CLAIM_STATUS+ADJUD_DT from DbName.dbo.PharmacyRx) 


--Load the data

declare @ts datetime=getdate()


insert DbName.dbo.PharmacyRx

(CLIENT_ID,

HRSA_ID,

ENTITY,

CLIENT,

CLINIC,

DEPARTMENT,

LAST_NAME,

FIRST_NAME,

DOB,

ID,

CLAIM_TYPE,

RX_NBR,

FILL_NBR,

ADJUD_DT,

PHARMACY,

PHARMACY_LOCATION,

PRESCRIBER_NAME,

PHARMACY_NPI,

GROUP_ID,

GROUP_NAME,

PRESCRIBER_NPI,

E_RX_FLAG,

SOURCE_TYPE,

THERAPEUTIC_CLASS_DESC,

CLASS_IND,

DRG_TYP,

NDC,

DRG_LBL_NM,

QTY_DISP,

DOS,

UNIT_COST_340B,

COST_340B,

AWP_PRICE,

AWP_COST,

RX_WRITTEN_DT,

FILL_SOLD_DTTM,

CLAIM_STATUS,

PLN_AR_AMT,

COPAY_AMT,

SALES_TAX,

ADMN_FEE,

DISP_FEE,

THRDPTY_FEE,

CLIENT_FEE,

TOT_DUE_WAG,

BillingMonth340B,

FLENAME,

LoadDT)

select

CLIENT_ID,

HRSA_ID,

ENTITY,

CLIENT,

CLINIC,

DEPARTMENT,

LAST_NAME,

FIRST_NAME,

DOB,

ID,

CLAIM_TYPE,

RX_NBR,

FILL_NBR,

ADJUD_DT,

PHARMACY,

PHARMACY_LOCATION,

PRESCRIBER_NAME,

PHARMACY_NPI,

GROUP_ID,

GROUP_NAME,

PRESCRIBER_NPI,

E_RX_FLAG,

SOURCE_TYPE,

THERAPEUTIC_CLASS_DESC,

CLASS_IND,

DRG_TYP,

NDC,

DRG_LBL_NM,

QTY_DISP,

DOS,

UNIT_COST_340B,

COST_340B,

AWP_PRICE,

AWP_COST,

RX_WRITTEN_DT,

FILL_SOLD_DTTM,

CLAIM_STATUS,

PLN_AR_AMT,

COPAY_AMT,

SALES_TAX,

ADMN_FEE,

DISP_FEE,

THRDPTY_FEE,

CLIENT_FEE,

TOT_DUE_WAG,

Billing_Month_340B,

FLENAME,

@ts LoadDT

from

##PharmRx cc


truncate table ##PharmRx 


--move the file to the archive

set @cmd='exec xp_cmdshell ''move "'+@pth+@fl+'"'

set @cmd=@cmd+' '+@pth+'archive\'''

exec(@cmd)

--find next file

delete from @dir

insert @dir(itm)

exec xp_cmdshell 'dir /b \\DatabaseServer01\f\docs\DbName\PharmRX\*PatDetails*dat'

end

select FleName,LoadDT,count(*) from DbName.dbo.PharmacyRx group by FleName,LoadDT order by 2 desc

GO



By E.DIN Editor 17 Nov, 2021
Title: Base64 Encoding With Simple Salt (and decoding)
By E.DIN Editor 17 Nov, 2021
By E.DIN Editor 17 Nov, 2021
By E.DIN Editor 01 Oct, 2020
 ***** My Valid Data Monitor **** XML OUT *** HTML EMAIL DELIVERY  *****IF OBJECT_ID('tempdb..#tCustomerID') IS NOT NULL DROP TABLE #tCustomerID    select distinct         mm.CustomerID  Into #tCustomerID    from myDatabase..myTable (nolock) mm     left join myDatabase.dbo.myOtherTable (nolock) mo  on mm.refID = mo.id     left join myDatabase.dbo.myOtherTableDetail (nolock) mod  on mo.id = mod.myOtherTableid         and mm.SearchValue = mod.SearchValue     where mm.refID is not null     and mm.quantity is not null      and mod.SearchValue is nullIF Exists (Select 1 From #tCustomerID)BEGIN DECLARE @xml NVARCHAR(MAX)DECLARE @body NVARCHAR(MAX)SET @xml = CAST(( SELECT [CustomerID] AS 'td' FROM #tCustomerID ORDER BY CustomerID FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))SET @body ='

My Valid Data Monitor

'    SET @body = @body + @xml +'
CustomerID
'--SELECT @body  exec msdb.dbo.sp_send_dbmail  @profile_name  = 'dbmailProfile' ,@recipients    = 'usergroup@mydomain.com' ,@subject       = 'My Valid Data Monitor' ,@body          = @body ,@body_format   = 'HTML'END
By websitebuilder 20 Sep, 2020
The new season is a great reason to make and keep resolutions. Whether it’s eating right or cleaning out the garage, here are some tips for making and keeping resolutions.
By websitebuilder 20 Sep, 2020
There are so many good reasons to communicate with site visitors. Tell them about sales and new products or update them with tips and information.
By websitebuilder 20 Sep, 2020
Write about something you know. If you don’t know much about a specific topic that will interest your readers, invite an expert to write about it.
By tekp 15 Jul, 2020
Turn Up! Not every microphone has the same base volume for transmitting your voice through your computer to whoever or whatever is on the other end of the exchange. Some microphones have a higher volume as compared to others, and some microphones have a volume that is so low that the person on the other […] The post How to Turn Up Mic Volume in Windows 10 – Appuals.com appeared first on TekPreacher.
By E.DIN Editor 09 Jun, 2020
'+@UNCPathAndLogTable+'
By E.DIN Editor 14 May, 2020
--UNIQUE AND RANDOM TRANSACTION NAMES (FOR HIGH VOLUME TRANSACTIONS PER SECOND)DECLARE @randomString VARCHAR(255) = CONVERT(varchar(255), NEWID());SELECT @randomString = replace(replace(replace(convert(varchar, getdate(), 120),':',''),'-',''),' ','') + RIGHT(@randomString,10);PRINT ''+ CONVERT(VARCHAR,LEN(@randomString)) + ' CHARS / OF MAXIMUM 32 CHARS FOR LENGTH OF TRANSACTION NAMES'SELECT @randomStringBEGIN TRANSACTION  @randomStringSELECT replace(replace(replace(convert(varchar, getdate(), 120),':',''),'-',''),' ','');SELECT CONVERT(VARCHAR,getdate(),112) + LEFT(REPLACE(CONVERT(VARCHAR,getdate(),114),':',''),6);SELECT REPLACE(SUBSTRING(CONVERT(VARCHAR(33),SYSDATETIMEOFFSET(),126), 1, 8), '-', '') + SUBSTRING(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(33), SYSDATETIMEOFFSET(), 126),'T',''),'.',''),':',''),9,DATALENGTH(CONVERT(VARCHAR(33), SYSDATETIMEOFFSET(), 126)))COMMIT TRANSACTION  @randomStringOUTPUT-- 24 CHARS / OF MAXIMUM 32 CHARS FOR LENGTH OF TRANSACTION NAMES-- 202005141039592610925CAA  <- THIS IS THE ONE-- 20200514103959-- 20200514103959-- 202005141039598866412-0500
More Posts
Share by: