shelter Postado Março 16, 2008 Denunciar Share Postado Março 16, 2008 Boa galera aqui, um assunto se não sei se os amigos tem necessidades ( mais pode ter certesa que uma vai ter ) importar arquivo.A forma mais normal é o txt.Vamos ao meu assunto e que certamente será no futuro de um de você´s.Tenho um arquivo txt separado por colunas qual seria a sintaxe para importar o mesmo para uma tabela do mysql.por tabulação faço assim:load data infiline " meuarquivo.txt" into table minhatabela;como seria por coluna.agradeço aos amigos...Vamos levantar essa que certamente amanhã você terá necessidade deste assunto.Valmir Lopes Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 16, 2008 Denunciar Share Postado Março 16, 2008 Vamos ao meu assunto e que certamente será no futuro de um de você´s.Tenho um arquivo txt separado por colunas qual seria a sintaxe para importar o mesmo para uma tabela do mysql.por tabulação faço assim:load data infiline " meuarquivo.txt" into table minhatabela;como seria por coluna.Valmir, acredito que este seu novo tópico se refira ao mesmo assunto que o anterior: Load data infile (sem respostas)Supondo que seja isto mesmo, aquele exemplo dá a entender que o delimitador de campos (colunas) seja o caracter " " (espaço) e, neste caso, há uma situação (coluna extra - em vermelho) que aparentemente não permitirá o uso deste método:02/01/06 10:17AM 1 E1074 T10101 0122238644009 00:01'1202/01/06 10:17AM 1 E1150 T10107 39776836 00:00'0802/01/06 10:17AM 1 E1032 T10930 <I>3767 0'00 00:01'05 TR02/01/06 10:17AM 1 E1015 T10119 22056915 00:00'14...MySQL não é minha especialidade mas, pelo que entendi do uso deste recurso (implementei algo similar), o número de colunas no arquivo de importação deve ser igual em cada linha (pelo menos no que diz respeito a delimitação).Mas a título de auxílio, vou deixar aqui o código que testei, considerando:- nome da tabela pabx;- que são as colunas: Data(Date), Hora(Time), Situacao(varchar(1), Campo1(varchar(6)), Campo2(varchar(6)), Fone(13), Duracao(Time);- suas colunas são delimitadas por " " (espaço);- que a linha "anômala" foi retirada do arquivo.load data infile "c:\\temp\\pabx.txt"into table pabxfields enclosed by ' ' terminated by ' ' escaped by ' '(Data, @varTime, status, Cmp1, Cmp2, Fone, @varDuracao)set Hora = cast(if(substring(@varTime, 6, 2)='PM', cast(substring(@varTime, 1, 5) as time)+cast('12:00' as time), cast(substring(@varTime, 1, 5) as time)) as time),Duracao = cast(substring(@varDuracao, 1, 5)+substring(":", 1, 1)+substring(@varDuracao, 7, 2) as time);Ref. LOAD DATA INFILE Syntax (site oficial MySQL)Abraços Link para o comentário Compartilhar em outros sites More sharing options...
0 shelter Postado Março 22, 2008 Autor Denunciar Share Postado Março 22, 2008 grande amigo muito obrigado pela sua ajuda, mais aqui estou revebendo o segunte erro quando executo o seu codigo:1406 (22001): Data Too long for columm ' Campo1' At Row 1...O amigo saberia me dizer aonde esta o erro.Agrdeço muito a sua ajuda.Um forte abraço e boa pascoa.Valmir Lopes Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 24, 2008 Denunciar Share Postado Março 24, 2008 grande amigo muito obrigado pela sua ajuda, mais aqui estou revebendo o segunte erro quando executo o seu codigo:1406 (22001): Data Too long for columm ' Campo1' At Row 1...O amigo saberia me dizer aonde esta o erro.shelter, a mensagem sugere que na tentativa de importação, o Campo1 tem tamanho maior que o reservado para ele na tabela.Para obter um melhor auxílio (seja meu ou de qualquer outro colega), seria interessante que você:- mencionasse o nome e tipo das colunas de sua tabela para qual os dados serão importados; - pudesse colocar pelo menos esta linha inicial (row 1) reportada no erro;- e a sequência de comandos para "load data infile ...".É que fica difícil opnar sem saber com o que estamos tratando.Abraços Link para o comentário Compartilhar em outros sites More sharing options...
0 shelter Postado Abril 16, 2008 Autor Denunciar Share Postado Abril 16, 2008 boa irmão a sua ajuda esta me ajudando muito, pow qual o problema de hoje?vou passar todo txt, este mesmo não tenho como mexer nele:02/01/06 10:17AM 1 E1074 T10101 0122238644009 00:01'12 02/01/06 10:17AM 1 E1150 T10107 39776836 00:00'08 02/01/06 10:17AM 1 E1032 T10930 <I>3767 0'00 00:01'05 TR 02/01/06 10:17AM 1 E1015 T10119 22056915 00:00'14 02/01/06 10:17AM 1 E1085 T10112 33846906 00:00'57 02/01/06 10:17AM 1 E1078 T10121 27250508 00:00'05 02/01/06 10:17AM 1 E1157 T10105 0123136376456 00:00'28 02/01/06 10:17AM 1 E1076 T10122 22688525 00:00'50 ******************************************************************************** Date Time T Ext CO Dial Number Ring Duration Acct code CC ******************************************************************************** 02/01/06 10:18AM 1 E1187 T10914 <I>3767 0'00 00:04'01 TR 02/01/06 10:18AM 1 E1155 T10110 25087568 00:00'03 02/01/06 10:18AM 1 E1160 T10115 25911394 00:01'41 02/01/06 10:18AM 1 E1049 T10113 0122422444700 00:05'35 02/01/06 10:18AM 1 E1077 T10901 0312292315985 00:01'27 02/01/06 10:18AM 1 E1029 T10105 38667971 00:00'12 02/01/06 10:18AM 1 E1042 T10123 0122732455382 00:01'03 02/01/06 10:18AM 1 E1089 T10101 0121633823995 00:00'28 02/01/06 10:18AM 1 E1125 T10915 <I>3788 0'00 00:01'43 TR 02/01/06 10:18AM 1 E1090 T10125 34093043 00:00'05 02/01/06 10:18AM 1 E1056 T10126 24873812 00:00'22 02/01/06 10:18AM 1 E1123 T10114 0123134953075 00:01'12 02/01/06 10:18AM 1 E1098 T10104 27996536 00:00'47 02/01/06 10:18AM 1 E1137 T10119 22630920 00:00'22 02/01/06 10:18AM 1 E1096 T10120 22540226 00:00'24 02/01/06 10:18AM 1 E1086 T10904 97624163 00:02'06 02/01/06 10:18AM 1 E1191 T10924 <I>3790 0'00 00:03'53 TR 02/01/06 10:18AM 1 E1079 T10109 0122422226974 00:03'26 02/01/06 12:42PM 1 E1165 T20901 22601155 00:00'08 02/01/06 12:42PM 1 E1166 T20902 22605302 00:00'08 02/01/06 12:42PM 1 E1157 T10111 33632206 00:00'12 02/01/06 12:42PM 1 E1130 T10901 82346944 00:04'28 02/01/06 12:42PM 1 E1159 T10119 38608895 00:07'00 02/01/06 12:42PM 1 E1015 T10114 25705614 00:00'01 02/01/06 12:42PM 1 E1125 T10109 27102189 00:00'01 02/01/06 12:42PM 1 E1150 T10111 27859533 00:00'05 02/01/06 12:42PM 1 E1016 T10101 33940655 00:00'30 02/01/06 12:42PM 1 E1163 T10104 0122238229809 00:00'17Quais os pontos que hoje tiram o meu sono:1- o campo data o que que eu recebo é dd/mm/aa e formato do mysql é aa/mm/dd daí recebo erro.2- este menu que vem aliatoriamente no arquivo, tenho que não gravar isso , pois se não da erro.3- o outro é as colunas ring e CC são esporadicos mais preciso desta informação tb.Esta parte que esta entre os asterisks seria o menu...Po desde já muito obrigado pela ajuda.Abraços Valmir Lopes Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Abril 16, 2008 Denunciar Share Postado Abril 16, 2008 Oi, Valmir Lopes!Vamos trabalhar como faziamos antigamente:Primeiro, crie uma tabela temporária com um único atributo do tipo CHAR. Não pode ser VARCHAR pois este segundo tipo é variável enquanto o primeiro é fixo. (Precisamos dos espaços para achar todos os atributos.)CREATE TEMPORARY TABLE tb (linha CHAR(80))ENGINE=MEMORY; Se o arquivo texto a ser importado for muito grande, utilize uma tabela permanente em vez de uma temporária, com ENGINE=MYISAM. Segundo:Importe seu arquivo para a tabela temporária. LOAD DATA INFILE "c:\\temp\\pabx.txt" INTO TABLE tb Terceiro: Tratar a importação e colocá-la na tabela correta. O tratamento é feito atributo por atributo usando diversas funções do mysql. 12345678901234567890123456789012345678901234567890123456789012345678901234567890 Date Time T Ext CO Dial Number Ring Duration Acct code CC 02/01/06 10:18AM 1 E1187 T10914 <I>3767 0'00 00:04'01 TR 02/01/06 10:17AM 1 E1157 T10105 0123136376456 00:00'28 INSERT INTO pabx (Data, Hora, status, Cmp1, Cmp2, Fone, Duracao) SELECT DATE(CONCAT(SUBSTRING(linha, 7, 2),'-',SUBSTRING(linha, 3, 2),'-20',SUBSTRING(linha, 1, 2)) AS Data, TIME(SUBSTRING(linha, 10, 5)) AS Hora, SUBSTRING(linha, 18, 1) AS status, SUBSTRING(linha, 20, 6) AS Cmp1, SUBSTRING(linha, 27, 6) AS Cmp2, SUBSTRING(linha, 34, 19) AS Fone, SUBSTRING(linha, 59, 8) AS Duracao) FROM tb WHERE linha NOT LIKE "********%" OR linha NOT LIKE " %" OR linha NOT LIKE "Date Time%"; Quarto liberação de memória da tabela temporária: DROP TEMPORARY TABLE tb Link para o comentário Compartilhar em outros sites More sharing options...
0 shelter Postado Abril 19, 2008 Autor Denunciar Share Postado Abril 19, 2008 caro Denis na boa?Aqui estou recenbendo o seguinte erro:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS data, TIME(SUBSTRING(linha, 10, 5)) AS hora) FROM arquivo WHERE linha NOT ' at line 2O q será, agrdeço muito a sua ajuda.Abraços .Valmir Lopes Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Abril 22, 2008 Denunciar Share Postado Abril 22, 2008 caro Denis na boa?Aqui estou recenbendo o seguinte erro:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS data, TIME(SUBSTRING(linha, 10, 5)) AS hora) FROM arquivo WHERE linha NOT ' at line 2O q será, agrdeço muito a sua ajuda.Abraços .Valmir LopesOi, Valmir!Este parêntese hora) Foi aberto onde? Passe o seu código, pois ele está diferente do que eu enviei no outro post. Link para o comentário Compartilhar em outros sites More sharing options...
0 shelter Postado Abril 23, 2008 Autor Denunciar Share Postado Abril 23, 2008 Denis amigo , desde já agrdeço a você ...aqui estou executando o seguinte cod.INSERT INTO import_atn (Data, Hora) SELECT DATE(CONCAT(SUBSTRING(linha, 7, 2),'-',SUBSTRING(linha, 3, 2),'-20',SUBSTRING(linha, 1, 2)) AS Data, TIME(SUBSTRING(linha, 10, 5)) AS Hora )FROM arquivo WHERE linha NOT LIKE "********%" OR linha NOT LIKE " %" OR linha NOT LIKE "Date Time%";segue erro :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS data,TIME(SUBSTRING(linha, 10, 5)) AS hora)FROM arquivoWHERE linha NOT ' at line 2Abraços Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Abril 24, 2008 Denunciar Share Postado Abril 24, 2008 Oi, Valmir!Como falei no post anterior, retire o parêntese Hora )FROM e sua rotina funcionará corretamente.sua rotina deverá ficar assim:INSERT INTO import_atn (Data, Hora) SELECT DATE(CONCAT(SUBSTRING(linha, 7, 2),'-',SUBSTRING(linha, 3, 2),'-20',SUBSTRING(linha, 1, 2)) AS Data, TIME(SUBSTRING(linha, 10, 5)) AS Hora FROM arquivo WHERE linha NOT LIKE "********%" OR linha NOT LIKE " %" OR linha NOT LIKE "Date Time%"; Link para o comentário Compartilhar em outros sites More sharing options...
0 shelter Postado Abril 24, 2008 Autor Denunciar Share Postado Abril 24, 2008 Boa denis e feriadão aproveito bem, irmão aqui te agradeço pacas a força que vem me dando estou fazendo desta forma conforme o code:INSERT INTO import_atn (Data, Hora) SELECT DATE(CONCAT(SUBSTRING(linha, 7, 2),'-',SUBSTRING(linha, 3, 2),'-20',SUBSTRING(linha, 1, 2)) AS Data, TIME(SUBSTRING(linha, 10, 5)) AS Hora FROM arquivo WHERE linha NOT LIKE "********%" OR linha NOT LIKE " %" OR linha NOT LIKE "Date Time%";e esta dando o seguinte erro:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS Data, TIME(SUBSTRING(linha, 10, 5)) AS Hora FROM arquivoWHERE linha NOT LIK' at line 2obrigado e um forte abraço.Valmir Lopes Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Abril 25, 2008 Denunciar Share Postado Abril 25, 2008 Oi, Valmir!Quando o MySQL começa a fazer este tipo de sacanagem (pois este comando está presente no manual), eu mudo a lógica.tente:WHERE NOT (linha LIKE "********%") AND NOT (linha LIKE " %") AND NOT (linha LIKE "Date Time%"); Ou WHERE SUBSTRING(linha, 1, 10) <> "**********" AND SUBSTRING(linha, 1, 10) <> " " AND SUBSTRING(linha, , 1, 10) <> "Date Time";Informe sucesso ou fracasso.Um AbraçoP.S. Foi bom acontecer o erro pois o OR estsava errado. Era AND. Link para o comentário Compartilhar em outros sites More sharing options...
0 shelter Postado Abril 25, 2008 Autor Denunciar Share Postado Abril 25, 2008 Amigo denis fiz das duas formas e recebi o seguinte erro:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS Data,TIME(SUBSTRING(linha, 10, 5)) AS Hora FROM arquivoWHERE SUBSTRING(li' at line 2obrigado + uma vez aí pela ajuda que vem me dandoabraços Valmir Lopes Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Abril 25, 2008 Denunciar Share Postado Abril 25, 2008 Amigo denis fiz das duas formas e recebi o seguinte erro:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS Data,TIME(SUBSTRING(linha, 10, 5)) AS Hora FROM arquivoWHERE SUBSTRING(li' at line 2obrigado + uma vez aí pela ajuda que vem me dandoabraços Valmir LopesVocê já verificou se o dado na posição em "TIME(SUBSTRING(linha, 10, 5)) AS Hora FROM arquivo" está com o formato correto? Link para o comentário Compartilhar em outros sites More sharing options...
0 shelter Postado Abril 25, 2008 Autor Denunciar Share Postado Abril 25, 2008 o que quer dizer este ( linha, 10, 5 ), a coluna esta no formato de hora . Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Abril 25, 2008 Denunciar Share Postado Abril 25, 2008 o que quer dizer este ( linha, 10, 5 ), a coluna esta no formato de hora .Não. Quero dizer que se linha é "xxxxxxxxx08:15xxxxxx" quando pegar substring(linha 10,5) vou obter "08:15" que é uma hora válida. Mas se em vez de "08:15" tiver "8:15" como neste exemplo, "xxxxxxxxx8:15xxxxxx" e eu pegar substring(linha 10,5) vou obter "8:15x" que não é uma hora válida.E pode haver outros erros, tais como "815" ou "8 15" ou "08 15", etc.Verifique os dados.Como mais um recurso, modifique o select onde está "TIME(SUBSTRING(linha, 10, 5)) AS Hora" passe para"SUBSTRING(linha, 10, 5) AS Hora" Link para o comentário Compartilhar em outros sites More sharing options...
0 shelter Postado Abril 25, 2008 Autor Denunciar Share Postado Abril 25, 2008 isso mesmo esta na posição 10,5e esta neste formato 08:15 Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
shelter
Boa galera aqui, um assunto se não sei se os amigos tem necessidades ( mais pode ter certesa que uma vai ter ) importar arquivo.
A forma mais normal é o txt.
Vamos ao meu assunto e que certamente será no futuro de um de você´s.
Tenho um arquivo txt separado por colunas qual seria a sintaxe para importar o mesmo para uma tabela do mysql.
por tabulação faço assim:
load data infiline " meuarquivo.txt" into table minhatabela;
como seria por coluna.
agradeço aos amigos...
Vamos levantar essa que certamente amanhã você terá necessidade deste assunto.
Valmir Lopes
Link para o comentário
Compartilhar em outros sites
16 respostass a esta questão
Posts Recomendados