Parameters
The parameters listed below are used in the read_csv
function to configure the CSV Rejects Table.
Name | Description | Type | Default |
---|---|---|---|
store_rejects |
If set to true, any errors in the file will be skipped and stored in the default rejects temporary tables. | BOOLEAN |
False |
rejects_scan |
Name of a temporary table where the information of the scan information of faulty CSV file are stored. | VARCHAR |
reject_scans |
rejects_table |
Name of a temporary table where the information of the faulty lines of a CSV file are stored. | VARCHAR |
reject_errors |
rejects_limit |
Upper limit on the number of faulty records from a CSV file that will be recorded in the rejects table. 0 is used when no limit should be applied. | BIGINT |
0 |
To store the information of the faulty CSV lines in a rejects table, the user must simply set the store_rejects
option to true. For example:
FROM read_csv(
'faulty.csv',
columns = {'name': 'VARCHAR', 'age': 'INTEGER'},
store_rejects = true
);
You can then query both the reject_scans
and reject_errors
tables, to retrieve information about the rejected tuples. For example:
FROM reject_scans;
Outputs:
scan_id | file_id | file_path | delimiter | quote | escape | newline_delimiter | skip_rows | has_header | columns | date_format | timestamp_format | user_arguments |
---|---|---|---|---|---|---|---|---|---|---|---|---|
5 |
0 |
faulty.csv |
, |
" |
" |
\n |
0 |
false |
{'name': 'VARCHAR','age': 'INTEGER'} |
|
|
store_rejects=true |
FROM reject_errors;
Outputs:
scan_id | file_id | line | line_byte_position | byte_position | column_idx | column_name | error_type | csv_line | error_message |
---|---|---|---|---|---|---|---|---|---|
5 |
0 |
2 |
10 |
23 |
2 |
age |
CAST |
Oogie Boogie, three |
Error when converting column "age". Could not convert string " three" to 'INTEGER' |
frank@ZZHPC:~$ cat food_prices.csv food_name,price apple,5.63 banana,2.22
D FROM sniff_csv('food_prices.csv'); ┌───────────┬─────────┬─────────┬──────────────────┬───┬─────────────────┬───────────────┬──────────────────────┐ │ Delimiter │ Quote │ Escape │ NewLineDelimiter │ … │ TimestampFormat │ UserArguments │ Prompt │ │ varchar │ varchar │ varchar │ varchar │ │ varchar │ varchar │ varchar │ ├───────────┼─────────┼─────────┼──────────────────┼───┼─────────────────┼───────────────┼──────────────────────┤ │ , │ " │ " │ \n │ … │ │ │ FROM read_csv('foo… │ ├───────────┴─────────┴─────────┴──────────────────┴───┴─────────────────┴───────────────┴──────────────────────┤ │ 1 rows 12 columns (7 shown) │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Change mode to 'box' to show all columns. The default is 'duckbox'.
D .mode current output mode: duckbox D .mode box D FROM sniff_csv('food_prices.csv'); ┌───────────┬───────┬────────┬──────────────────┬─────────┬──────────┬───────────┬─────────────────────────────────────────────────────────────────────────┬────────────┬─────────────────┬───────────────┬────────────────────────────────────────────────────────────────────────────────────┐ │ Delimiter │ Quote │ Escape │ NewLineDelimiter │ Comment │ SkipRows │ HasHeader │ Columns │ DateFormat │ TimestampFormat │ UserArguments │Prompt │ ├───────────┼───────┼────────┼──────────────────┼─────────┼──────────┼───────────┼─────────────────────────────────────────────────────────────────────────┼────────────┼─────────────────┼───────────────┼────────────────────────────────────────────────────────────────────────────────────┤ │ , │ " │ " │ \n │ │ 0 │ true │ [{'name': food_name, 'type': VARCHAR}, {'name': price, 'type': DOUBLE}] │ │ │ │ FROM read_csv('food_prices.csv', auto_detect=false, delim=',', quote='"', escap... │ └───────────┴───────┴────────┴──────────────────┴─────────┴──────────┴───────────┴─────────────────────────────────────────────────────────────────────────┴────────────┴─────────────────┴───────────────┴────────────────────────────────────────────────────────────────────────────────────┘
CREATE OR REPLACE TABLE low_cost_foods AS SELECT * FROM read_csv('food_prices.csv') WHERE price < 4.00;
SELECT * FROM read_csv( 'food_orders.csv', dateformat='%Y%m%d', types={'order_date': 'DATE'} ); ┌───────────┬────────────┬──────────┐ │ food_name │ order_date │ quantity │ │ varchar │ date │ int64 │ ├───────────┼────────────┼──────────┤ │ cake │ 2023-12-25 │ 12 │ │ sushi │ 2023-01-26 │ 21 │ └───────────┴────────────┴──────────┘
SELECT * FROM read_csv( 'food_orders.csv', dateformat = '%Y%m%d', columns = { 'food_name': 'VARCHAR', 'order_date': 'DATE', 'quantity': 'INTEGER' } );
SELECT food_name, color, filename FROM read_csv('food_collection/pizza*.csv', filename = true);
SELECT * FROM read_csv('food_collection/*.csv', union_by_name = true);
{"food_name":"Hawaiian Pizza", "quantity":6, "order_date":"2023-02-24 15:00:00"} {"food_name":"Vegetarian Pizza", "quantity":2, "order_date":"2023-03-25 15:00:00"}
SELECT * FROM read_json( 'pizza_orders_records.json', format = 'newline_delimited' );
[ { "food_name": "Margherita Pizza", "quantity": 12, "order_date": "2023-01-20T15:00:00Z" }, { "food_name": "Pepperoni Pizza", "quantity": 22, "order_date": "2023-01-22T15:00:00Z" } ]
SELECT * FROM read_json( 'pizza_orders_array_of_records.json', format = 'array' );
D SELECT * FROM read_csv('74id-aqj9.csv') LIMIT 5;
D DESCRIBE SELECT * FROM read_csv('74id-aqj9.csv'); ┌────────────────────┬─────────────┬─────────┬─────────┬─────────┬─────────┐ │ column_name │ column_type │ null │ key │ default │ extra │ │ varchar │ varchar │ varchar │ varchar │ varchar │ varchar │ ├────────────────────┼─────────────┼─────────┼─────────┼─────────┼─────────┤ │ ID │ BIGINT │ YES │ │ │ │ │ NAME │ VARCHAR │ YES │ │ │ │ │ TERMINALNAME │ BIGINT │ YES │ │ │ │ │ NBBIKES │ BIGINT │ YES │ │ │ │ │ NBEMPTYDOCKS │ BIGINT │ YES │ │ │ │ │ RUNDATE │ BIGINT │ YES │ │ │ │ │ INSTALLED │ BOOLEAN │ YES │ │ │ │ │ TEMPORARY │ BOOLEAN │ YES │ │ │ │ │ LOCKED │ BOOLEAN │ YES │ │ │ │ │ LASTCOMMWITHSERVER │ BIGINT │ YES │ │ │ │ │ LATESTUPDATETIME │ BIGINT │ YES │ │ │ │ │ REMOVALDATE │ VARCHAR │ YES │ │ │ │ │ INSTALLDATE │ BIGINT │ YES │ │ │ │ │ LAT │ DOUBLE │ YES │ │ │ │ │ LONG │ DOUBLE │ YES │ │ │ │ │ LOCATION │ VARCHAR │ YES │ │ │ │ ├────────────────────┴─────────────┴─────────┴─────────┴─────────┴─────────┤ │ 16 rows 6 columns │ └──────────────────────────────────────────────────────────────────────────┘
D .mode line D SELECT * FROM read_csv('74id-aqj9.csv') LIMIT 1; ID = 2 NAME = Harbour Town - Docklands Dve - Docklands TERMINALNAME = 60000 NBBIKES = 10 NBEMPTYDOCKS = 11 RUNDATE = 20170422134506 INSTALLED = true TEMPORARY = false LOCKED = false LASTCOMMWITHSERVER = 1492832566010 LATESTUPDATETIME = 1492832565029 REMOVALDATE = INSTALLDATE = 1313724600000 LAT = -37.814022 LONG = 144.939521 LOCATION = (-37.814022, 144.939521)
D .mode duckbox D CREATE OR REPLACE TABLE bikes AS SELECT * FROM read_csv( '74id-aqj9.csv', timestampformat='%Y%m%d%H%M%S', types={'RUNDATE': 'TIMESTAMP'}); 100% ▕████████████████████████████████████████████████████████████▏
D SELECT count(*) FROM bikes; ┌──────────────┐ │ count_star() │ │ int64 │ ├──────────────┤ │ 5644554 │ └──────────────┘
D SUMMARIZE SELECT * FROM bikes; 100% ▕████████████████████████████████████████████████████████████▏ ┌────────────────────┬─────────────┬──────────────────────┬───┬──────────────────────┬─────────┬─────────────────┐ │ column_name │ column_type │ min │ … │ q75 │ count │ null_percentage │ │ varchar │ varchar │ varchar │ │ varchar │ int64 │ decimal(9,2) │ ├────────────────────┼─────────────┼──────────────────────┼───┼──────────────────────┼─────────┼─────────────────┤ │ ID │ BIGINT │ 2 │ … │ 43 │ 5644554 │ 0.00 │ │ NAME │ VARCHAR │ 205 Bourke St nea… │ … │ │ 5644554 │ 0.00 │ │ TERMINALNAME │ BIGINT │ 60000 │ … │ 60039 │ 5644554 │ 0.00 │ │ NBBIKES │ BIGINT │ 0 │ … │ 12 │ 5644554 │ 0.00 │ │ NBEMPTYDOCKS │ BIGINT │ 0 │ … │ 12 │ 5644554 │ 0.00 │ │ RUNDATE │ TIMESTAMP │ 2015-04-22 12:36:42 │ … │ 2017-11-06 13:53:5… │ 5644554 │ 0.00 │ │ INSTALLED │ BOOLEAN │ true │ … │ │ 5644554 │ 0.00 │ │ TEMPORARY │ BOOLEAN │ false │ … │ │ 5644554 │ 0.00 │ │ LOCKED │ BOOLEAN │ false │ … │ │ 5644554 │ 0.00 │ │ LASTCOMMWITHSERVER │ BIGINT │ 1429651366010 │ … │ 1507118756183 │ 5644554 │ 0.00 │ │ LATESTUPDATETIME │ BIGINT │ 1429607109147 │ … │ 1507090166146 │ 5644554 │ 0.02 │ │ REMOVALDATE │ VARCHAR │ │ … │ │ 5644554 │ 100.00 │ │ INSTALLDATE │ BIGINT │ 1277175180000 │ … │ 1317170573847 │ 5644554 │ 22.01 │ │ LAT │ DOUBLE │ -37.867068 │ … │ -37.81165435819162 │ 5644554 │ 0.00 │ │ LONG │ DOUBLE │ 144.935296 │ … │ 144.97213231973092 │ 5644554 │ 0.00 │ │ LOCATION │ VARCHAR │ (-37.79625, 144.96… │ … │ │ 5644554 │ 0.00 │ ├────────────────────┴─────────────┴──────────────────────┴───┴──────────────────────┴─────────┴─────────────────┤ │ 16 rows 12 columns (6 shown) │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
D SUMMARIZE bikes; 100% ▕████████████████████████████████████████████████████████████▏ ┌────────────────────┬─────────────┬──────────────────────┬──────────────────────┬───┬──────────────────────┬─────────┬─────────────────┐ │ column_name │ column_type │ min │ max │ … │ q75 │ count │ null_percentage │ │ varchar │ varchar │ varchar │ varchar │ │ varchar │ int64 │ decimal(9,2) │ ├────────────────────┼─────────────┼──────────────────────┼──────────────────────┼───┼──────────────────────┼─────────┼─────────────────┤ │ ID │ BIGINT │ 2 │ 57 │ … │ 43 │ 5644554 │ 0.00 │ │ NAME │ VARCHAR │ 205 Bourke St nea… │ Yorkshire Brewery … │ … │ │ 5644554 │ 0.00 │ │ TERMINALNAME │ BIGINT │ 60000 │ 60052 │ … │ 60039 │ 5644554 │ 0.00 │ │ NBBIKES │ BIGINT │ 0 │ 39 │ … │ 12 │ 5644554 │ 0.00 │ │ NBEMPTYDOCKS │ BIGINT │ 0 │ 39 │ … │ 12 │ 5644554 │ 0.00 │ │ RUNDATE │ TIMESTAMP │ 2015-04-22 12:36:42 │ 2018-09-04 10:00:10 │ … │ 2017-11-07 22:24:4… │ 5644554 │ 0.00 │ │ INSTALLED │ BOOLEAN │ true │ true │ … │ │ 5644554 │ 0.00 │ │ TEMPORARY │ BOOLEAN │ false │ false │ … │ │ 5644554 │ 0.00 │ │ LOCKED │ BOOLEAN │ false │ true │ … │ │ 5644554 │ 0.00 │ │ LASTCOMMWITHSERVER │ BIGINT │ 1429651366010 │ 1507119446229 │ … │ 1507118756432 │ 5644554 │ 0.00 │ │ LATESTUPDATETIME │ BIGINT │ 1429607109147 │ 1507119264599 │ … │ 1507090032989 │ 5644554 │ 0.02 │ │ REMOVALDATE │ VARCHAR │ │ │ … │ │ 5644554 │ 100.00 │ │ INSTALLDATE │ BIGINT │ 1277175180000 │ 1450061460000 │ … │ 1317170573847 │ 5644554 │ 22.01 │ │ LAT │ DOUBLE │ -37.867068 │ -37.79625 │ … │ -37.81166903427137 │ 5644554 │ 0.00 │ │ LONG │ DOUBLE │ 144.935296 │ 144.988507 │ … │ 144.97214691682882 │ 5644554 │ 0.00 │ │ LOCATION │ VARCHAR │ (-37.79625, 144.96… │ (-37.867068, 144.9… │ … │ │ 5644554 │ 0.00 │ ├────────────────────┴─────────────┴──────────────────────┴──────────────────────┴───┴──────────────────────┴─────────┴─────────────────┤ │ 16 rows 12 columns (7 shown) │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
D DESCRIBE SUMMARIZE bikes; Parser Error: syntax error at or near "SUMMARIZE" LINE 2: SUMMARIZE bikes; ^ D DESCRIBE SELECT * FROM (SUMMARIZE bikes); ┌─────────────────┬──────────────┬─────────┬─────────┬─────────┬─────────┐ │ column_name │ column_type │ null │ key │ default │ extra │ │ varchar │ varchar │ varchar │ varchar │ varchar │ varchar │ ├─────────────────┼──────────────┼─────────┼─────────┼─────────┼─────────┤ │ column_name │ VARCHAR │ YES │ │ │ │ │ column_type │ VARCHAR │ YES │ │ │ │ │ min │ VARCHAR │ YES │ │ │ │ │ max │ VARCHAR │ YES │ │ │ │ │ approx_unique │ BIGINT │ YES │ │ │ │ │ avg │ VARCHAR │ YES │ │ │ │ │ std │ VARCHAR │ YES │ │ │ │ │ q25 │ VARCHAR │ YES │ │ │ │ │ q50 │ VARCHAR │ YES │ │ │ │ │ q75 │ VARCHAR │ YES │ │ │ │ │ count │ BIGINT │ YES │ │ │ │ │ null_percentage │ DECIMAL(9,2) │ YES │ │ │ │ ├─────────────────┴──────────────┴─────────┴─────────┴─────────┴─────────┤ │ 12 rows 6 columns │ └────────────────────────────────────────────────────────────────────────┘
D SELECT * EXCLUDE(count, q25, q50, q75) FROM (SUMMARIZE bikes); 100% ▕████████████████████████████████████████████████████████████▏ ┌────────────────────┬─────────────┬──────────────────────┬───┬─────────────────────┬──────────────────────┬─────────────────┐ │ column_name │ column_type │ min │ … │ avg │ std │ null_percentage │ │ varchar │ varchar │ varchar │ │ varchar │ varchar │ decimal(9,2) │ ├────────────────────┼─────────────┼──────────────────────┼───┼─────────────────────┼──────────────────────┼─────────────────┤ │ ID │ BIGINT │ 2 │ … │ 29.994064367175866 │ 15.312326868433633 │ 0.00 │ │ NAME │ VARCHAR │ 205 Bourke St nea… │ … │ │ │ 0.00 │ │ TERMINALNAME │ BIGINT │ 60000 │ … │ 60026.21742249255 │ 14.889603179330924 │ 0.00 │ │ NBBIKES │ BIGINT │ 0 │ … │ 9.308236930676896 │ 6.280731820395964 │ 0.00 │ │ NBEMPTYDOCKS │ BIGINT │ 0 │ … │ 8.446449267736654 │ 6.047987992081942 │ 0.00 │ │ RUNDATE │ TIMESTAMP │ 2015-04-22 12:36:42 │ … │ │ │ 0.00 │ │ INSTALLED │ BOOLEAN │ true │ … │ │ │ 0.00 │ │ TEMPORARY │ BOOLEAN │ false │ … │ │ │ 0.00 │ │ LOCKED │ BOOLEAN │ false │ … │ │ │ 0.00 │ │ LASTCOMMWITHSERVER │ BIGINT │ 1429651366010 │ … │ 1479079468073.83 │ 25759604591.447163 │ 0.00 │ │ LATESTUPDATETIME │ BIGINT │ 1429607109147 │ … │ 1479071234094.8193 │ 25758911581.77747 │ 0.02 │ │ REMOVALDATE │ VARCHAR │ │ … │ │ │ 100.00 │ │ INSTALLDATE │ BIGINT │ 1277175180000 │ … │ 1311278767123.9016 │ 52703384644.1754 │ 22.01 │ │ LAT │ DOUBLE │ -37.867068 │ … │ -37.823332677342094 │ 0.01628828854737686 │ 0.00 │ │ LONG │ DOUBLE │ 144.935296 │ … │ 144.9624703225895 │ 0.012684566548837244 │ 0.00 │ │ LOCATION │ VARCHAR │ (-37.79625, 144.96… │ … │ │ │ 0.00 │ ├────────────────────┴─────────────┴──────────────────────┴───┴─────────────────────┴──────────────────────┴─────────────────┤ │ 16 rows 8 columns (6 shown) │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
D CREATE OR REPLACE TABLE bike_readings_april AS SELECT * FROM bikes WHERE rundate BETWEEN '2017-04-01' AND '2017-04-30'; D COPY bike_readings_april TO 'bike_readings_april.csv';
D SELECT count(*) FROM bikes WHERE rundate BETWEEN '2017-04-01' AND '2017-04-30'; ┌──────────────┐ │ count_star() │ │ int64 │ ├──────────────┤ │ 138000 │ └──────────────┘ D SELECT count(*) FROM bikes WHERE rundate BETWEEN '2017-04-01' AND '2017-04-30 23:59:59'; ┌──────────────┐ │ count_star() │ │ int64 │ ├──────────────┤ │ 142800 │ └──────────────┘
D CREATE OR REPLACE TABLE bike_readings_april AS SELECT * FROM bikes WHERE rundate BETWEEN '2017-04-01' AND '2017-04-30 23:59:59'; D COPY bike_readings_april TO 'bike_readings_april.csv';
D COPY bike_readings_april TO 'bike_readings_april.tsv' (HEADER false, DELIM '\t');
D COPY ( SELECT name, rundate FROM bike_readings_april ) TO 'bike_readings_april.json' (FORMAT JSON, TIMESTAMPFORMAT '%d %B %Y');
Hive partitioning
D COPY ( SELECT *, date_trunc('day', rundate) AS rundate_truncated FROM bike_readings_april ) TO 'bike_readings' ( FORMAT PARQUET, PARTITION_BY (rundate_truncated), OVERWRITE_OR_IGNORE true );
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2022-01-09 Matplotlib - Figure Layout
2022-01-09 Matplotlib - Tick labels' rotation, size and alignment