Re: importing db as text files

From: Dennis Gearon <gearond(at)cvc(dot)net>
To: Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com>
Cc: expect <expect(at)ihubbell(dot)com>, pgsql-general(at)postgresql(dot)org
Subject: Re: importing db as text files
Date: 2003-08-15 16:14:35
Message-ID: 3F3D06EB.9010001@cvc.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

AFAICT,
NULL == NULL
'' == empty string
default == column default

Seems pretty clear, and about as intuitive as it gets. Trying to use an empty string for anything else just means it's not availble to represent itself. any other DB using anything else is complicating things

Now, for exports/dumps that don't use the ' char to delineate the start and begin of a column, i.e.

454wetoit,Four score and seven years ago,default,,

what would the last three values be? Empty strings would be my guess.

'454wetoit','Four score and seven years ago','default','',''

seems like quoted column values would be necessary to distinguish the constants NULL and default from strings that contain those two text sequences.

Stephan Szabo wrote:
> On Fri, 15 Aug 2003, expect wrote:
>
>
>>On Fri, 15 Aug 2003 00:32:01 -0700 (PDT)
>>Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com> wrote:
>>
>>
>>>On Thu, 14 Aug 2003, expect wrote:
>>>
>>>
>>>>On Thu, 14 Aug 2003 12:46:07 -0500
>>>>Bruno Wolff III <bruno(at)wolff(dot)to> wrote:
>>>>
>>>>>Note that it isn't obvious what empty strings should map to for numbers.
>>>>>NULL and 0 make about as much sense as using the default value.
>>>>
>>>>Well I'm new here but it seems to me they should map to the default value
>>>>for that column. Why wouldn't they?
>>>
>>>One problem with doing that is that it's inconsistent.
>>
>>Please elaborate. How is it inconsistent, exactly?
>
>
> See my comments below.
>
>
>>>Given
>>>create table test(
>>> a text default 'abc',
>>> b int default 5
>>>);
>>>
>>>copy test from stdin with delimiter ',';
>>>,
>>>\.
>>>
>>>What would you expect the values of the row in test
>>>to be?
>>
>>
>>Oh a test....
>>
>>Does the \. end the STDIN input?
>>
>>Where's the null option? Don't you mean:
>>
>>copy test from stdin with delimiter ',' null '';
>
>
> No, I'm saying without a null specifier.
>
>
>>In this case I would expect the row to have:
>>
>> a | b
>>----------
>> |
>> abc | 5
>>
>>
>>Is this too much to expect?
>
>
> Without a null specifier of '', empty string is a valid value for a.
> Why would it get the default, and how would you insert an empty string?
> Should it treat b differently because '' isn't valid for that type, that'd
> be inconsistent.
>
> With a null specifier of '', empty string is valid for both and means
> NULL. Otherwise, how would you specify a null when you have that
> null specifier?
>
> What you probably really want is another specifier that inserts the
> default for a column, so you could say something like:
> copy test from stdin with delimiter ',' default '';
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Murthy Kambhampaty 2003-08-15 16:27:34 Re: importing db as text files
Previous Message expect 2003-08-15 15:55:36 Re: importing db as text files