ZhangZhihui's Blog  

 

 

Parameters

The parameters listed below are used in the read_csv function to configure the CSV Rejects Table.

NameDescriptionTypeDefault
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_idfile_idfile_pathdelimiterquoteescapenewline_delimiterskip_rowshas_headercolumnsdate_formattimestamp_formatuser_arguments
5 0 faulty.csv , " " \n 0 false {'name': 'VARCHAR','age': 'INTEGER'}     store_rejects=true
FROM reject_errors;

Outputs:

 
scan_idfile_idlineline_byte_positionbyte_positioncolumn_idxcolumn_nameerror_typecsv_lineerror_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-2512       │
│ sushi     │ 2023-01-2621       │
└───────────┴────────────┴──────────┘
复制代码

 

复制代码
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'
    );

 

 

https://data.melbourne.vic.gov.au/explore/dataset/melbourne-bike-share-station-readings-2011-2017/information/

 

D SELECT *
  FROM read_csv('74id-aqj9.csv')
  LIMIT 5;

 

复制代码
D DESCRIBE
  SELECT *
  FROM read_csv('74id-aqj9.csv');
┌────────────────────┬─────────────┬─────────┬─────────┬─────────┬─────────┐
│    column_name     │ column_type │  nullkeydefault │  extra  │
│      varcharvarcharvarcharvarcharvarcharvarchar │
├────────────────────┼─────────────┼─────────┼─────────┼─────────┼─────────┤
│ 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     │         │         │         │
│ LONGDOUBLE      │ 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 │
│      varcharvarcharvarchar        │   │       varchar        │  int64  │  decimal(9,2)   │
├────────────────────┼─────────────┼──────────────────────┼───┼──────────────────────┼─────────┼─────────────────┤
│ ID                 │ BIGINT2                    │ … │ 4356445540.00 │
│ NAME               │ VARCHAR205 Bourke St  nea…  │ … │                      │ 56445540.00 │
│ TERMINALNAME       │ BIGINT60000                │ … │ 6003956445540.00 │
│ NBBIKES            │ BIGINT0                    │ … │ 1256445540.00 │
│ NBEMPTYDOCKS       │ BIGINT0                    │ … │ 1256445540.00 │
│ RUNDATE            │ TIMESTAMP2015-04-22 12:36:42  │ … │ 2017-11-06 13:53:5…  │ 56445540.00 │
│ INSTALLED          │ BOOLEAN     │ true                 │ … │                      │ 56445540.00 │
│ TEMPORARY          │ BOOLEAN     │ false                │ … │                      │ 56445540.00 │
│ LOCKED             │ BOOLEAN     │ false                │ … │                      │ 56445540.00 │
│ LASTCOMMWITHSERVER │ BIGINT1429651366010        │ … │ 150711875618356445540.00 │
│ LATESTUPDATETIME   │ BIGINT1429607109147        │ … │ 150709016614656445540.02 │
│ REMOVALDATE        │ VARCHAR     │                      │ … │                      │ 5644554100.00 │
│ INSTALLDATE        │ BIGINT1277175180000        │ … │ 1317170573847564455422.01 │
│ LAT                │ DOUBLE-37.867068           │ … │ -37.8116543581916256445540.00 │
│ LONGDOUBLE144.935296           │ … │ 144.9721323197309256445540.00 │
│ LOCATION           │ VARCHAR     │ (-37.79625, 144.96…  │ … │                      │ 56445540.00 │
├────────────────────┴─────────────┴──────────────────────┴───┴──────────────────────┴─────────┴─────────────────┤
│ 16 rows                                                                                   12 columns (6 shown) │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
复制代码

 

复制代码
D SUMMARIZE bikes;
100% ▕████████████████████████████████████████████████████████████▏
┌────────────────────┬─────────────┬──────────────────────┬──────────────────────┬───┬──────────────────────┬─────────┬─────────────────┐
│    column_name     │ column_type │         minmax          │ … │         q75          │  count  │ null_percentage │
│      varcharvarcharvarcharvarchar        │   │       varchar        │  int64  │  decimal(9,2)   │
├────────────────────┼─────────────┼──────────────────────┼──────────────────────┼───┼──────────────────────┼─────────┼─────────────────┤
│ ID                 │ BIGINT257                   │ … │ 4356445540.00 │
│ NAME               │ VARCHAR205 Bourke St  nea…  │ Yorkshire Brewery …  │ … │                      │ 56445540.00 │
│ TERMINALNAME       │ BIGINT6000060052                │ … │ 6003956445540.00 │
│ NBBIKES            │ BIGINT039                   │ … │ 1256445540.00 │
│ NBEMPTYDOCKS       │ BIGINT039                   │ … │ 1256445540.00 │
│ RUNDATE            │ TIMESTAMP2015-04-22 12:36:422018-09-04 10:00:10  │ … │ 2017-11-07 22:24:4…  │ 56445540.00 │
│ INSTALLED          │ BOOLEAN     │ true                 │ true                 │ … │                      │ 56445540.00 │
│ TEMPORARY          │ BOOLEAN     │ false                │ false                │ … │                      │ 56445540.00 │
│ LOCKED             │ BOOLEAN     │ false                │ true                 │ … │                      │ 56445540.00 │
│ LASTCOMMWITHSERVER │ BIGINT14296513660101507119446229        │ … │ 150711875643256445540.00 │
│ LATESTUPDATETIME   │ BIGINT14296071091471507119264599        │ … │ 150709003298956445540.02 │
│ REMOVALDATE        │ VARCHAR     │                      │                      │ … │                      │ 5644554100.00 │
│ INSTALLDATE        │ BIGINT12771751800001450061460000        │ … │ 1317170573847564455422.01 │
│ LAT                │ DOUBLE-37.867068-37.79625            │ … │ -37.8116690342713756445540.00 │
│ LONGDOUBLE144.935296144.988507           │ … │ 144.9721469168288256445540.00 │
│ LOCATION           │ VARCHAR     │ (-37.79625, 144.96…  │ (-37.867068, 144.9…  │ … │                      │ 56445540.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  │  nullkeydefault │  extra  │
│     varcharvarcharvarcharvarcharvarcharvarchar │
├─────────────────┼──────────────┼─────────┼─────────┼─────────┼─────────┤
│ column_name     │ VARCHAR      │ YES     │         │         │         │
│ column_type     │ VARCHAR      │ YES     │         │         │         │
│ minVARCHAR      │ YES     │         │         │         │
│ maxVARCHAR      │ YES     │         │         │         │
│ approx_unique   │ BIGINT       │ YES     │         │         │         │
│ avgVARCHAR      │ YES     │         │         │         │
│ std             │ VARCHAR      │ YES     │         │         │         │
│ q25             │ VARCHAR      │ YES     │         │         │         │
│ q50             │ VARCHAR      │ YES     │         │         │         │
│ q75             │ VARCHAR      │ YES     │         │         │         │
│ countBIGINT       │ 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 │
│      varcharvarcharvarchar        │   │       varcharvarchardecimal(9,2)   │
├────────────────────┼─────────────┼──────────────────────┼───┼─────────────────────┼──────────────────────┼─────────────────┤
│ ID                 │ BIGINT2                    │ … │ 29.99406436717586615.3123268684336330.00 │
│ NAME               │ VARCHAR205 Bourke St  nea…  │ … │                     │                      │            0.00 │
│ TERMINALNAME       │ BIGINT60000                │ … │ 60026.2174224925514.8896031793309240.00 │
│ NBBIKES            │ BIGINT0                    │ … │ 9.3082369306768966.2807318203959640.00 │
│ NBEMPTYDOCKS       │ BIGINT0                    │ … │ 8.4464492677366546.0479879920819420.00 │
│ RUNDATE            │ TIMESTAMP2015-04-22 12:36:42  │ … │                     │                      │            0.00 │
│ INSTALLED          │ BOOLEAN     │ true                 │ … │                     │                      │            0.00 │
│ TEMPORARY          │ BOOLEAN     │ false                │ … │                     │                      │            0.00 │
│ LOCKED             │ BOOLEAN     │ false                │ … │                     │                      │            0.00 │
│ LASTCOMMWITHSERVER │ BIGINT1429651366010        │ … │ 1479079468073.8325759604591.4471630.00 │
│ LATESTUPDATETIME   │ BIGINT1429607109147        │ … │ 1479071234094.819325758911581.777470.02 │
│ REMOVALDATE        │ VARCHAR     │                      │ … │                     │                      │          100.00 │
│ INSTALLDATE        │ BIGINT1277175180000        │ … │ 1311278767123.901652703384644.175422.01 │
│ LAT                │ DOUBLE-37.867068           │ … │ -37.8233326773420940.016288288547376860.00 │
│ LONGDOUBLE144.935296           │ … │ 144.96247032258950.0126845665488372440.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
  );
复制代码

 

 

posted on   ZhangZhihuiAAA  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!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
 
点击右上角即可分享
微信分享提示