IMPORTAÇÃO DE ARQUIVO TEXTO com erros
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
Post 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
Mais Posts
28/05/2015
Thiago Santana
Se caso for na aplicação essa separação necessária, informe qual a linguagem.
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
28/05/2015
Marisiana Battistella
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
?
28/05/2015
Marisiana Battistella
28/05/2015
Tiredmonkey
28/05/2015
Marisiana Battistella
select substr('20150525', 1, 4)||'/'|| substr('20150525', 5, 2) ||'/'|| substr('20150525', 7, 2) as data from dual
28/05/2015
Tiredmonkey
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 data
Verifica qual é a sintaxe que tem que utilizar no SQLServer...
29/05/2015
Marisiana Battistella
Participe sempre que puder..!
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 > @data
posso fazer isso ?
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 ?
Clique aqui para fazer login e interagir na Comunidade :)