Jump to content


Photo

Instrução Load Data Infile


  • Faça o login para participar
18 replies to this topic

#16 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 25/09/2009, 03:41

Paulo,
Nas linhas do arquivo texto existem duas informações de datas em posições diferentes. Preciso
capturar essas datas, formatá-las para o formato brasileiro (dd/mm/aaa) para gravar no BD
juntamente com as outras informações. Gostaria que no momento de geração do arquivo csv
essa transformação para o formato brasileiro já fosse feita. É possivel?? São as posições "(\d{8})"
do código abaixo.

Olá,

Bem, a dica do Felipe procede. O mais adequado seria você gravar as datas num campo DATE, que usa este mesmo formato padrão YYYYMMDD (ano/mês/dia). Assim você poderá efetuar consultas baseadas em intervalos, além de poder usar todas funções de data e tempo do MySQL. Se você precisar da data no formato brasileiro na exibição, basta formatá-la com a função DATE_FORMAT(). Se precisar de ajuda no uso de sua sintaxe, é só dizer! :)

Está convencido? :P

Outra coisa, as informações apóso último"(\d{8})" eu gostaria que não entrassem na geração do csv, pois
existe uma quebra de linha neste ponto que esta provocando a entrada de "sujeira"no arquivo csv.

Mas como faço para NÃO inserir as informações localizadas após o último
"(/d{8})" no arquivo csv. Tem quebra de linha no arquivo texto, neste ponto e essas informações são inseridas não me interessam.

Eita! São só quebras de linha que vêm após a última data? No código já estamos usando a função trim(), que deveria estar servindo justamente para isso. :ponder:

Ao menos no teste local que eu fiz estava tudo Ok. Me confirme quais caracteres aparecem após a última data. (y)

[]’sAté mais

#17 osvaldo luso

osvaldo luso

    Novato no fórum

  • Usuários
  • 21 posts
  • Sexo:Não informado

Posted 25/09/2009, 20:14

Paulo,
Nas linhas do arquivo texto existem duas informações de datas em posições diferentes. Preciso
capturar essas datas, formatá-las para o formato brasileiro (dd/mm/aaa) para gravar no BD
juntamente com as outras informações. Gostaria que no momento de geração do arquivo csv
essa transformação para o formato brasileiro já fosse feita. É possivel?? São as posições "(\d{8})"
do código abaixo.

Olá,

Bem, a dica do Felipe procede. O mais adequado seria você gravar as datas num campo DATE, que usa este mesmo formato padrão YYYYMMDD (ano/mês/dia). Assim você poderá efetuar consultas baseadas em intervalos, além de poder usar todas funções de data e tempo do MySQL. Se você precisar da data no formato brasileiro na exibição, basta formatá-la com a função DATE_FORMAT(). Se precisar de ajuda no uso de sua sintaxe, é só dizer! :)

Está convencido? :P

Outra coisa, as informações apóso último"(\d{8})" eu gostaria que não entrassem na geração do csv, pois
existe uma quebra de linha neste ponto que esta provocando a entrada de "sujeira"no arquivo csv.

Mas como faço para NÃO inserir as informações localizadas após o último
"(/d{8})" no arquivo csv. Tem quebra de linha no arquivo texto, neste ponto e essas informações são inseridas não me interessam.

Eita! São só quebras de linha que vêm após a última data? No código já estamos usando a função trim(), que deveria estar servindo justamente para isso. :ponder:

Ao menos no teste local que eu fiz estava tudo Ok. Me confirme quais caracteres aparecem após a última data. (y)

[]’s


Pessoal

O que estou tentando fazer é pegar as posiçoes "(/d{8})" que são textos (20090815) e formatá-las para "2009/08/15" no momento de gerar o arquivo csv. Quando eu realizar a importação do arquivo csv para o BD as informações referentes as esses campos no arquivo seriam gravadas no banco nas coluna "Data_liquidacao" e " Data_Processamento" respectivamente, que são do tipo Date. Deste forma acretido que eu não precisaria realizar a formatação depois
de gravada no BD.

#18 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 26/09/2009, 08:52

Pessoal

O que estou tentando fazer é pegar as posiçoes "(/d{8})" que são textos (20090815) e formatá-las para "2009/08/15" no momento de gerar o arquivo csv. Quando eu realizar a importação do arquivo csv para o BD as informações referentes as esses campos no arquivo seriam gravadas no banco nas coluna "Data_liquidacao" e " Data_Processamento" respectivamente, que são do tipo Date. Deste forma acretido que eu não precisaria realizar a formatação depois
de gravada no BD.

Opa,

Sim, mas veja bem: o formato do campo DATE é YYYY-MM-DD. Você pode inserir como YYYY/MM/DD sem problemas. Mas ao receber os dados você receberá YYYY-MM-DD. A formatação vem na própria consulta mesmo, em todo caso. No caso do CSV, os dados estão no formato YYYYMMDD, sem os traços. Mas para o MySQL, que só "enxerga" os dígitos, não há nenhum problema. Veja como é fácil fazer isso na própria consulta:

SELECT DATE_FORMAT('%d/%m/%Y', Data_Liquidacao) AS Data_Liquidacao FROM `tblcxq902`;
Neste caso, se você tiver 2009-08-15 no banco de dados, a data será apresentada como 15/08/2009 no PHP. :)

[]’sAté mais

#19 osvaldo luso

osvaldo luso

    Novato no fórum

  • Usuários
  • 21 posts
  • Sexo:Não informado

Posted 28/09/2009, 22:19

Pessoal

O que estou tentando fazer é pegar as posiçoes "(/d{8})" que são textos (20090815) e formatá-las para "2009/08/15" no momento de gerar o arquivo csv. Quando eu realizar a importação do arquivo csv para o BD as informações referentes as esses campos no arquivo seriam gravadas no banco nas coluna "Data_liquidacao" e " Data_Processamento" respectivamente, que são do tipo Date. Deste forma acretido que eu não precisaria realizar a formatação depois
de gravada no BD.

Opa,

Sim, mas veja bem: o formato do campo DATE é YYYY-MM-DD. Você pode inserir como YYYY/MM/DD sem problemas. Mas ao receber os dados você receberá YYYY-MM-DD. A formatação vem na própria consulta mesmo, em todo caso. No caso do CSV, os dados estão no formato YYYYMMDD, sem os traços. Mas para o MySQL, que só "enxerga" os dígitos, não há nenhum problema. Veja como é fácil fazer isso na própria consulta:

SELECT DATE_FORMAT('%d/%m/%Y', Data_Liquidacao) AS Data_Liquidacao FROM `tblcxq902`;
Neste caso, se você tiver 2009-08-15 no banco de dados, a data será apresentada como 15/08/2009 no PHP. :)

[]’s



Valeu Paulo!

Funcionou perfeitamente.
Obrigado




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq