Re: importing db as text files - Mailing list pgsql-general

From Dennis Gearon
Subject Re: importing db as text files
Date
Msg-id 3F3D06EB.9010001@cvc.net
Whole thread Raw
In response to Re: importing db as text files  (Stephan Szabo <sszabo@megazone.bigpanda.com>)
List 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
notavailble 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
containthose 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@megazone.bigpanda.com> wrote:
>>
>>
>>>On Thu, 14 Aug 2003, expect wrote:
>>>
>>>
>>>>On Thu, 14 Aug 2003 12:46:07 -0500
>>>>Bruno Wolff III <bruno@wolff.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
>


pgsql-general by date:

Previous
From: Martin_Hurst@dom.com
Date:
Subject: Replication project
Next
From: expect
Date:
Subject: Re: importing db as text files