Fórum IMPORTAÇÃO DE ARQUIVO TEXTO com erros #521212
28/05/2015
0
estou importando um arquivo texto que contem a seguinte linha
00012015052500251642
ou seja
0001 - crachá do funcionario
2015-05-25 data batida ponto
00251642 batida ponto
como faço a separação ? pois nao e delimitado por ; ou algo assim ?
Tiredmonkey
Curtir tópico
+ 0Post mais votado
28/05/2015
Essa string possuirá sempre esse número de caracteres?
Se a resposta for sim, você pode utiliza SUBSTRING para obter essas informações
Exemplo de como fazer no Oracle:
select substr('00012015052500251642', 1, 4) as cracha,
substr('00012015052500251642', 4, 12) as data,
substr('00012015052500251642', 12, 20) as batida
from dual [url]http://www.techonthenet.com/oracle/functions/substr.php[/url]
Marisiana Battistella
Gostei + 1
Mais Posts
28/05/2015
Thiago Santana
Se caso for na aplicação essa separação necessária, informe qual a linguagem.
Gostei + 1
28/05/2015
Tiredmonkey
IF EXISTS (SELECT NAME FROM TEMPDB.SYS.tables WHERE name LIKE '#TEMP_BULK%') DROP TABLE #TEMP_BULK CREATE TABLE #TEMP_BULK(TEXTO VARCHAR(100)) GO BULK INSERT #TEMP_BULK FROM 'C:\importacaoponto\rep.txt' GO ALTER TABLE #TEMP_BULK ADD ID INT IDENTITY(1,1) GO SELECT SUBSTRING(TEXTO,1,9)AS sequenciapotno ,SUBSTRING(TEXTO,10,10)AS batidaok ,SUBSTRING(TEXTO,11,18)AS DATAPONTO ,SUBSTRING(TEXTO,19,22) AS HORA ,SUBSTRING(TEXTO,23,23)AS inipis ,SUBSTRING(TEXTO,24)LEN(TEXTO)) AS PIS FROM #TEMP_BULK
Gostei + 0
28/05/2015
Marisiana Battistella
Gostei + 1
28/05/2015
Tiredmonkey
as posiçoes eu acertei :D
mas uma ultima duvida, como que faço pra converter 20150525 para date 2015-05-25
?
Gostei + 0
28/05/2015
Marisiana Battistella
Gostei + 1
28/05/2015
Tiredmonkey
Gostei + 0
28/05/2015
Marisiana Battistella
select substr('20150525', 1, 4)||'/'|| substr('20150525', 5, 2) ||'/'|| substr('20150525', 7, 2) as data
from dualGostei + 1
28/05/2015
Tiredmonkey
Gostei + 0
28/05/2015
Marisiana Battistella
No PostgreSQL é assim:
select to_date( substr('20150525', 1, 4)||'/'|| substr('20150525', 5, 2) ||'/'||substr('20150525', 7, 2), 'yyyy/mm/dd') as dataVerifica qual é a sintaxe que tem que utilizar no SQLServer...
Gostei + 1
29/05/2015
Tiredmonkey
Gostei + 0
29/05/2015
Marisiana Battistella
Participe sempre que puder..!
Gostei + 0
29/05/2015
Thiago Santana
Gostei + 0
29/05/2015
Tiredmonkey
SELECT
s.[idMotorista]
,s.dataHoraVinculacao
,f.NOMEFUNC
,(
select min(dataHoraVinculacao)
from [Garagem].[dbo].[Servico]
where dataHoraVinculacao > @data
) datainicial
,b.SUBSTRING(TEXTO,11,2)+ '-' + SUBSTRING(TEXTO,13,2)+ '-' +SUBSTRING(TEXTO,15,4) as data
,b.SUBSTRING(TEXTO,19,2)+ ':' + SUBSTRING(TEXTO,21,2)AS HORA
FROM
[Garagem].[dbo].[Servico] s
LEFT JOIN OPENQUERY (GLOBUS,'SELECT CODIGO_GLOBUS,CODIGO_SPARK FROM T_ARR_PARAM_PRDT') l on (l.CODIGO_SPARK = s.idMotorista)
LEFT JOIN OPENQUERY (GLOBUS,'SELECT CODINTFUNC,NOMEFUNC FROM FLP_FUNCIONARIOS') f on (f.CODINTFUNC = l.CODIGO_GLOBUS)
LEFT JOIN OPENQUERY (GLOBUS,'SELECT TIPODOCTO,NRDOCTO,CODINTFUNC FROM FLP_DOCUMENTOS') d on (d.CODINTFUNC = f.CODINTFUNC)
LEFT JOIN #TEMP_BULK b on (SUBSTRING(TEXTO,24,10)=d.NRDOCTO )
where
s.dataHoraVinculacao > @dataposso fazer isso ?
Gostei + 0
29/05/2015
Tiredmonkey
b.SUBSTRING(TEXTO,11,2)+ '-' + SUBSTRING(TEXTO,13,2)+ '-' +SUBSTRING(TEXTO,15,4) as data
b.SUBSTRING(TEXTO,19,2)+ ':' + SUBSTRING(TEXTO,21,2)AS HORA
da erro !
Mensagem 4121, Nível 16, Estado 1, Linha 7
Não é possível localizar a coluna "b" ou a função definida pelo usuário ou o agregado"b.SUBSTRING", ou o nome é ambíguo.
como posso fazer para chamar estes dados ?
Gostei + 0
29/05/2015
Tiredmonkey
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)