What about: COPY ... FROM ... WITH PATTERN 'regexp_pattern'
Where the columns would be matched with the capture groups. This could handle the quite common case of varying white-space as column separators: COPY log (col1, col2, col3) FROM 'log.txt' WITH PATTERN '^(\S+)\s+(\S+)\s+(\S+)$' This could also handle $SUBJECT: COPY table_name (single_column) FROM 'unknown.txt' WITH PATTERN '^(.*)$'; And lots of other more complex use-cases. /Joel