Bruce Momjian wrote:
I have applied the attached patch that complete TODO item:
o -Allow dump/load of CSV format
This adds new keywords to COPY and \copy:
CSV - enable CSV mode
QUOTE - specify quote character
ESCAPE - specify escape character
FORCE - force quoting of specified columns
LITERAL - prevent NULL checks for specific columns
NO NULL CHECK
If folks have better ideas for naming of those keywords, I am all
Bruce and I tossed this around quite a bit.
The problem is that using QUOTE or NULL in these phrases might look confusing, e.g.
COPY mytable TO 'mytable.csv' CSV QUOTE '"' FORCE QUOTE field1,field2;
COPY mytable FROM 'mytable.csv' NULL '' CSV NO NULL CHECK field1,field2;
I also don't think NO NULL CHECK actually matches the use case for this very well (and I'm dubious about LITERAL too). They both describe the actual behaviour, but not what you are trying to achieve. Essentially, this would be used when you have a field with a NOT NULL constraint, but the input CSV data stream has what would otherwise be considered nulls. (COPY itself will never produce such a CSV, as non-null values that resemble null are always quoted, but third party programs well might.) So an alternative might be FORCE NOT NULL, but for the previous consideration. Perhaps use of an optional preposition might make things slightly clearer, e.g.:
COPY mytable TO 'mytable.csv' CSV QUOTE '"' FORCE QUOTE IN field1,field2;
COPY mytable FROM 'mytable.csv' NULL '' CSV FORCE NOT NULL IN field1,field2;
But it does start to look a little too much like COBOL :-).
So I'm interested to see if there are any other inspirations people have.
---------------------------(end of broadcast)--------------------------- TIP 7: don't forget to increase your free space map settings