1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
# name: test/sql/copy/csv/overwrite/test_copy_overwrite.test
# description: Test copy statement with file overwrite
# group: [overwrite]
statement ok
PRAGMA enable_verification
# create a table and insert some values
statement ok
CREATE TABLE test (a INTEGER, b VARCHAR(10));
statement ok
INSERT INTO test VALUES (1, 'hello'), (2, 'world '), (3, ' xx');
query IT
SELECT * FROM test ORDER BY 1;
----
1 hello
2 world
3 xx
# copy to the CSV file
query I
COPY test TO '__TEST_DIR__/overwrite.csv';
----
3
# now copy to the file again
query I
COPY (SELECT * FROM test LIMIT 2) TO '__TEST_DIR__/overwrite.csv';
----
2
# reload the data from the file: it should only have two rows
statement ok
DELETE FROM test;
query I
COPY test FROM '__TEST_DIR__/overwrite.csv';
----
2
query IT
SELECT * FROM test ORDER BY 1;
----
1 hello
2 world
# test query returning error does not export to file
statement error
COPY (SELECT i FROM range(1) tbl(i) UNION ALL SELECT concat('hello', i)::INT i FROM range(1) tbl(i)) to '__TEST_DIR__/overwrite.csv';
----
Could not convert string 'hello0' to INT32
statement ok
DELETE FROM test;
query I
COPY test FROM '__TEST_DIR__/overwrite.csv';
----
2
# this test should still pass as data was not overwritten
query IT
SELECT * FROM test ORDER BY 1;
----
1 hello
2 world
# Test USE_TMP_FILE flag
statement error
COPY (SELECT i FROM range(1) tbl(i) UNION ALL SELECT concat('hello', i)::INT i FROM range(1) tbl(i)) to '__TEST_DIR__/overwrite.csv' (USE_TMP_FILE FALSE);
----
Could not convert string 'hello0' to INT32
|