apache / apache/datafusion

CSV import doesn't support date parsing

Offen
#13,633 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
Rust
Sterne
9.3k
Forks
2.4k
Ø Merge
3 T. 11 Std.
Gemergte PRs (30 T.)
360

Beschreibung

### Describe the bug

While working on [#13576](https://github.com/apache/datafusion/pull/13576/files#diff-ec9107a0ab3a6acc573a935893a568ff798339bbfde06ee3aeb3ed39cd2f483aR367), I noticed we allow to pass `format.date_format` when reading CSV but ignore that

### To Reproduce

```sql
CREATE EXTERNAL TABLE dates (
date date
) STORED AS CSV
LOCATION 'dates.csv'
OPTIONS ('format.has_header' 'true', 'format.date_format' '%d/%m/%Y');

SELECT * FROM dates;
0 row(s) fetched.
Elapsed 0.014 seconds.

Arrow error: Parser error: Error while parsing value 03/12/2024 for column 0 at line 1
```
[dates.csv](https://github.com/user-attachments/files/17999374/dates.csv)

### Expected behavior

```sql
select to_date('03/12/2024', '%d/%m/%Y');
```
This^ works, so I `date_format` should be supported too?

### Additional context

I believe we currently don't pass the format string when reading csv (because there's no functionality in arrow), only when writing:

https://github.com/apache/arrow-rs/blob/9047d99f6bf87582532ee6ed0acb3f2d5f889f11/arrow-csv/src/reader/mod.rs#L909

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginnen Sie mit dem im Issue beschriebenen CSV-Leseweg und untersuchen Sie die verlinkte arrow-csv reader-Implementierung, insbesondere den Bereich um den referenzierten reader code. Reproduzieren Sie das CREATE EXTERNAL TABLE-Beispiel mit dates.csv und der Option date_format und überprüfen Sie anschließend, dass das Importieren der CSV 03/12/2024 gemäß %d/%m/%Y ohne den Parserfehler parst.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
databases
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.