Обсуждение: copy

Поиск
Список
Период
Сортировка

copy

От
Sferacarta Software
Дата:
Hi all,

I have a strange behavior while copying from a text file, I don't know
if this will be considered a bug or a feature.

I have this text file:
------------------------
XXX|QWERTYUIOPASDFGHJKLA
A01|BAIO
A02|BAIO CHIARO
A03|BAIO OSCURO
------------------------

and this table:

Table    = mantelli
+----------------------------------+----------------------------------+-------+
|              Field               |              Type                | Length|
+----------------------------------+----------------------------------+-------+
| m_codice                         | char()                           |     3 |
| m_descr                          | char()                           |    20 |
+----------------------------------+----------------------------------+-------+
Index:    i5_mantelli

prova=> copy mantelli from '/tmp/mantelli.load' using delimiters '|';
COPY
prova=> select * from mantelli;
m_codice|m_descr
--------+--------------------
XXX     |QWERTYUIOPASDFGHJKLA
       |BAIO CHIARO       |BAIO OSCURO
(4 rows)

prova=> select m_descr,m_codice from mantelli ;
m_descr             |m_codice
--------------------+--------
QWERTYUIOPASDFGHJKLA|XXX                   |A01            |A02            |A03     
(4 rows)

prova=> select m_codice from mantelli ;
m_codice
--------
XXX     
A01     
A02     
A03     
(4 rows)

prova=> select m_descr from mantelli ;
m_descr             
--------------------
QWERTYUIOPASDFGHJKLA                     ARO       URO
(4 rows)

Seems that COPY expects that last field is 20 char long and if it is less than 20
it becomes crazy.

-Jose'-




Re: [HACKERS] copy

От
Tom Lane
Дата:
Sferacarta Software <sferac@bo.nettuno.it> writes:
> I have a strange behavior while copying from a text file, I don't know
> if this will be considered a bug or a feature.
> Seems that COPY expects that last field is 20 char long and if it is
> less than 20 it becomes crazy.

I cannot replicate this bug with 6.4.  What version are you using?
        regards, tom lane


Re: [HACKERS] copy

От
jwieck@debis.com (Jan Wieck)
Дата:
>
> Sferacarta Software <sferac@bo.nettuno.it> writes:
> > I have a strange behavior while copying from a text file, I don't know
> > if this will be considered a bug or a feature.
> > Seems that COPY expects that last field is 20 char long and if it is
> > less than 20 it becomes crazy.
>
> I cannot replicate this bug with 6.4.  What version are you using?

    I can, but it isn't a bug! At least not one in the backend.

    The  file must contain CRLF at the end of a line instead of a
    single LF.

    The data is absolutely intact in the database  including  the
    CR  for those lines, where the second fields value is shorter
    than 20 chars. It's just psql(1) who's output  get's  mangled
    up.


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#======================================== jwieck@debis.com (Jan Wieck) #

Re: [HACKERS] copy

От
Tom Lane
Дата:
jwieck@debis.com (Jan Wieck) writes:
>     I can, but it isn't a bug! At least not one in the backend.
>     The  file must contain CRLF at the end of a line instead of a
>     single LF.

Good eye!  I had noticed the odd formatting of Jose's output, but
didn't draw the right conclusion --- I thought it just got messed
up in the preparation of his mail message.

I guess the next question is whether we like this behavior or not.

I could see an argument for stripping CR if it's not quoted somehow...
but this ought to be considered in the context of the whole is-COPY-
8-bit-clean issue that keeps coming up.
        regards, tom lane