Importando dados de txt com BULK no MSSQL

Ĉ¿

Lembrando que o usuário do serviço do MSSQL, precisar ter permissão no diretório onde está localizado o arquivo txt.

Se mesmo assim ocorrer na hora de excluir o arquivo, veja este post http://desenvolvendorespostas.blogspot.com.br/2016/04/exec-masterxpcmdshell-del-arquivo.html

para ter acesso a função fncSplit, veja este post  http://desenvolvendorespostas.blogspot.com.br/2016/04/split-de-texto-no-mssql.html

USE [BANCO]
GO
/****** Object:  StoredProcedure [dbo].[PRC_CARGA_SELECAO_BI]    Script Date: 15/04/2016 14:05:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[PRC_CARGA_SELECAO_BI] AS
SET XACT_ABORT ON
BEGIN TRY
 BEGIN TRAN
DECLARE
@EXIST int
,@DOMINIO VARCHAR(200)
,@USUARIO VARCHAR(200)
,@NAME VARCHAR(MAX)
,@ARQUIVO VARCHAR(MAX)
,@SQL VARCHAR(2000)
--cria tabela temporária
CREATE  TABLE #FileList(Name varchar(200), depth numeric, IsFile numeric)
--busca arquivos da tabela da pasta e grava na tabela
INSERT INTO #FileList exec master.dbo.xp_dirtree N'\\Srvdhtbd\selecoes_bi\', 1, 1
--verifica se o arquivo desejado existe e grava na variavél
select TOP 1 @EXIST =  files.IsFile, @NAME = Name from #filelist files
--verifica se arquivo existe
IF @EXIST = 1
BEGIN
SET @DOMINIO = master.dbo.fncSplit(@NAME, '_', 1)
SET @USUARIO = master.dbo.fncSplit(@NAME, '_', 2)
--cria tabela dos protocolos selecionados
CREATE TABLE #SELECIONADOS (SOL_INT_COD int)
SET @ARQUIVO = 'S:\SELECOES_BI\'+@DOMINIO+'_'+@USUARIO+'_SELECAO_GIS_pronto.txt'
--importa txt e insere na tabela
SET @SQL = 'BULK INSERT #SELECIONADOS FROM '''+@ARQUIVO+' '' WITH( FIRSTROW = 2)'
EXEC(@SQL)
--apaga arquivo da pasta
 SET @SQL = 'EXEC MASTER..XP_CMDSHELL ''del '+@ARQUIVO+''''
 EXEC(@SQL)
--APAGA DADOS DO USUÁRIO
DELETE FROM MV_SELECAO_BI  WHERE DOMINIO = @DOMINIO AND USUARIO = @USUARIO
--INSERE DADOS MV [dbo].[MV_SELECAO_BI]
INSERT INTO [dbo].[MV_SELECAO_BI]
   ([OBJECTID]
   ,[SOL_INT_COD]
   ,[SOL_BAIRRO]
   ,[SOL_ENDERECO]
   ,[SOL_REGIAO]
   ,[SHAPE]
   ,[SOL_DT_CRIACAO]
   ,[SOL_DT_ULT_RESP]
   ,[ASSU_STR_DES]
   ,[ASS_STR_DES]
   ,[SUB_STR_DES]
   ,[ORG_STR_DES]
   ,[UNI_STR_DES]
   ,[GRU_INT_COD]
   ,[GRU_STR_DES]
   ,[SOL_STR_PEN]
   ,[LOG_STR_TP]
   ,[LOG_STR_NME]
   ,[LOG_INT_NUM]
   ,[LOG_STR_REG]
   ,[LGO_STR_BAI]
   ,[LGO_STR_CID]
   ,[LOG_STR_EST]
   ,[LOG_INT_CEP]
   ,[SOL_STR_TP]
   ,[SOL_STR_SIT]
   ,[SOL_STR_PRAZO]
   ,[SOL_STR_LIDO]
   ,[DOMINIO]
   ,[USUARIO])
(SELECT
   [OBJECTID]
  ,SOLICITACAO.[SOL_INT_COD]
  ,[SOL_BAIRRO]
  ,[SOL_ENDERECO]
  ,[SOL_REGIAO]
  ,[SHAPE]
  ,[SOL_DT_CRIACAO]
  ,[SOL_DT_ULT_RESP]
  ,[ASSU_STR_DES]
  ,[ASS_STR_DES]
  ,[SUB_STR_DES]
  ,[ORG_STR_DES]
  ,[UNI_STR_DES]
  ,[GRU_INT_COD]
  ,[GRU_STR_DES]
  ,[SOL_STR_PEN]
  ,[LOG_STR_TP]
  ,[LOG_STR_NME]
  ,[LOG_INT_NUM]
  ,[LOG_STR_REG]
  ,[LGO_STR_BAI]
  ,[LGO_STR_CID]
  ,[LOG_STR_EST]
  ,[LOG_INT_CEP]
  ,[SOL_STR_TP]
  ,[SOL_STR_SIT]
  ,[SOL_STR_PRAZO]
  ,[SOL_STR_LIDO]
,@DOMINIO as DOMINIO
,@USUARIO AS USUARIO
FROM
[SJCAMPOS].[dbo].[MV_SOLICITACAO] SOLICITACAO
JOIN
#SELECIONADOS SEL ON SOLICITACAO.SOL_INT_COD = SEL.SOL_INT_COD)
END
 COMMIT TRAN
END TRY
BEGIN CATCH
  DECLARE @erro int
  SET @erro = @@error   -- Variável @err pega o conteúdo de @@error
 ROLLBACK TRAN
   --INSERT INTO [SJCAMPOS].[dbo].[TB_LOG_ERRO_PROC] VALUES ('[dbo].[PRC_CARGA_SELECAO_BI]', @erro, GETDATE(),ERROR_MESSAGE())
END CATCH




Comandos git do dia a dia

Ĉ¿ #Criando um projeto do zero echo "# UBBOAT_App" >> README.md git init git add README.md git commit -m "first commi...