blob: 2abb7a532ba45fcd6a3de39e1088ac84e888518b [file]
--
-- copy data from file with different EOL and NEWLINE option.
-- Using /usr/bin/printf in case of different behaviours on
-- different OS, especially on ubuntu18.
--
CREATE TABLE copy_eol(id int, seq text);
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'id' as the Apache Cloudberry data distribution key for this table.
HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
--- EOL: '\n'
\!/usr/bin/printf '1\x1es1\x5c\n2\x1es2\x5c\n' > /tmp/copy_lf.file;
COPY copy_eol FROM '/tmp/copy_lf.file' (FORMAT 'text', DELIMITER E'\x1e' , NULL E'\x1b\x4e', ESCAPE E'\x1b', NEWLINE 'LF');
COPY copy_eol FROM '/tmp/copy_lf.file' (FORMAT 'text', DELIMITER E'\x1e' , NULL E'\x1b\x4e', ESCAPE E'\x1b');
SELECT * FROM copy_eol ORDER BY id ASC;
id | seq
----+-----
1 | s1\
1 | s1\
2 | s2\
2 | s2\
(4 rows)
TRUNCATE copy_eol;
--- EOL: '\r'
--- produce '\r' step by step on linux
\!/usr/bin/printf '1\x1es1\' > /tmp/copy_cr.file;
\!/usr/bin/printf '\r' >> /tmp/copy_cr.file;
\!/usr/bin/printf '2\x1es2\' >> /tmp/copy_cr.file;
\!/usr/bin/printf '\r' >> /tmp/copy_cr.file;
COPY copy_eol FROM '/tmp/copy_cr.file' (FORMAT 'text', DELIMITER E'\x1e' , NULL E'\x1b\x4e', ESCAPE E'\x1b', NEWLINE 'CR');
COPY copy_eol FROM '/tmp/copy_cr.file' (FORMAT 'text', DELIMITER E'\x1e' , NULL E'\x1b\x4e', ESCAPE E'\x1b');
SELECT * FROM copy_eol ORDER BY id ASC;
id | seq
----+-----
1 | s1\
1 | s1\
2 | s2\
2 | s2\
(4 rows)
TRUNCATE copy_eol;
--- EOL: '\r\n'
\!/usr/bin/printf '1\x1es1\\\r\n2\x1es2\\\r\n' > /tmp/copy_crlf.file;
COPY copy_eol FROM '/tmp/copy_crlf.file' (FORMAT 'text', DELIMITER E'\x1e' , NULL E'\x1b\x4e', ESCAPE E'\x1b', NEWLINE 'CRLF');
COPY copy_eol FROM '/tmp/copy_crlf.file' (FORMAT 'text', DELIMITER E'\x1e' , NULL E'\x1b\x4e', ESCAPE E'\x1b');
SELECT * FROM copy_eol ORDER BY id ASC;
id | seq
----+-----
1 | s1\
1 | s1\
2 | s2\
2 | s2\
(4 rows)
TRUNCATE copy_eol;
--- EOL: '\r\n' with a '\r' in data
\!/usr/bin/printf '1\x1es1\\\r\n2\x1es2\\\r\r\n3\x1es3\\\r\n' > /tmp/copy_crlf_1.file;
COPY copy_eol FROM '/tmp/copy_crlf_1.file' (FORMAT 'text', DELIMITER E'\x1e' , NULL E'\x1b\x4e', ESCAPE E'\x1b', NEWLINE 'CRLF');
COPY copy_eol FROM '/tmp/copy_crlf_1.file' (FORMAT 'text', DELIMITER E'\x1e' , NULL E'\x1b\x4e', ESCAPE E'\x1b');
SELECT * FROM copy_eol ORDER BY id ASC;
id | seq
----+-------
1 | s1\
1 | s1\
2 | s2\\r
2 | s2\\r
3 | s3\
3 | s3\
(6 rows)
TRUNCATE copy_eol;
DROP TABLE copy_eol;