如何加载'.csv'文件并在Google-BigQuery中删除前导和尾随空格?

zd287kbt  于 2023-03-10  发布在  Go
关注(0)|答案(1)|浏览(155)

我想加载这个.csv文件下面的谷歌BigQuery。
文件data_transportasi_kajarta.csv

bulan;tahun;jenis;kode_trayek;trayek;jumlah_penumpang
Januari;2019;BRT;1;KORIDOR 1;2223257
Januari;2019;BRT;2;KORIDOR 2;781605
Januari;2019;BRT;3;KORIDOR 3;919.2
Januari;2019;BRT;4;KORIDOR 4;669417
Januari;2019;ANGKUTAN UMUM LAINNYA ;GR1;BUNDARAN SENAYAN - HARMONI (BUS GRATIS);364618
Januari;2019;ANGKUTAN UMUM LAINNYA ;;RAGUNAN - SMK 57;1927
Januari;2019;ANGKUTAN UMUM LAINNYA ;;MARUNDA-RAGUNAN;112
Januari;2019; ANGKUTAN INTEGRASI BUS KECIL ;JAK-1;TANJUNG PRIOK-PLUMPANG;56764
Januari;2019; ANGKUTAN INTEGRASI BUS KECIL ;JAK-2;DUREN SAWIT - KAMPUNG MELAYU;56551
Januari;2019; ANGKUTAN INTEGRASI BUS KECIL ;JAK-3;LEBAK BULUS - PONDOK LABU;43344
...
...
...

但是,我刚刚意识到,当我像bellow一样将分号;设置为分隔符时,它不会删除前导和尾随空格。

BigQuery中实际创建的表结果:

| bulan   | tahun | jenis                         | kode_trayek | trayek                                  | jumlah_penumpang |
|---------+-------+-------------------------------+-------------+-----------------------------------------+------------------|
| Januari | 2019  | BRT                           | 1           | KORIDOR 1                               | 2223257          |
| Januari | 2019  | BRT                           | 2           | KORIDOR 2                               | 781605           |
| Januari | 2019  | BRT                           | 3           | KORIDOR 3                               | 919.2            |
| Januari | 2019  | BRT                           | 4           | KORIDOR 4                               | 669417           |
| Januari | 2019  | ANGKUTAN UMUM LAINNYA         | GR1         | BUNDARAN SENAYAN - HARMONI (BUS GRATIS) | 364618           |
| Januari | 2019  | ANGKUTAN UMUM LAINNYA         | null        | RAGUNAN - SMK 57                        | 1927             |
| Januari | 2019  | ANGKUTAN UMUM LAINNYA         | null        | MARUNDA-RAGUNAN                         | 112              |
| Januari | 2019  |  ANGKUTAN INTEGRASI BUS KECIL | JAK-1       | TANJUNG PRIOK-PLUMPANG                  | 56764            | <----- in column `jenis` there is a leading white space
| Januari | 2019  |  ANGKUTAN INTEGRASI BUS KECIL | JAK-2       | DUREN SAWIT - KAMPUNG MELAYU            | 56551            | <----- in column `jenis` there is a leading white space
| Januari | 2019  |  ANGKUTAN INTEGRASI BUS KECIL | JAK-3       | LEBAK BULUS - PONDOK LABU               | 43344            | <----- in column `jenis` there is a leading white space

我对创建表结果的期望

| bulan   | tahun | jenis                        | kode_trayek | trayek                                  | jumlah_penumpang |
|---------+-------+------------------------------+-------------+-----------------------------------------+------------------|
| Januari | 2019  | BRT                          | 1           | KORIDOR 1                               | 2223257          |
| Januari | 2019  | BRT                          | 2           | KORIDOR 2                               | 781605           |
| Januari | 2019  | BRT                          | 3           | KORIDOR 3                               | 919.2            |
| Januari | 2019  | BRT                          | 4           | KORIDOR 4                               | 669417           |
| Januari | 2019  | ANGKUTAN UMUM LAINNYA        | GR1         | BUNDARAN SENAYAN - HARMONI (BUS GRATIS) | 364618           |
| Januari | 2019  | ANGKUTAN UMUM LAINNYA        | null        | RAGUNAN - SMK 57                        | 1927             |
| Januari | 2019  | ANGKUTAN UMUM LAINNYA        | null        | MARUNDA-RAGUNAN                         | 112              |
| Januari | 2019  | ANGKUTAN INTEGRASI BUS KECIL | JAK-1       | TANJUNG PRIOK-PLUMPANG                  | 56764            | <----- in column `jenis` there is NO leading white space
| Januari | 2019  | ANGKUTAN INTEGRASI BUS KECIL | JAK-2       | DUREN SAWIT - KAMPUNG MELAYU            | 56551            | <----- in column `jenis` there is NO leading white space
| Januari | 2019  | ANGKUTAN INTEGRASI BUS KECIL | JAK-3       | LEBAK BULUS - PONDOK LABU               | 43344            | <----- in column `jenis` there is NO leading white space

是否可以在上传设置中设置多个自定义分隔符/分隔符?因此,我可以有两个或更多的分隔符,例如:;;;
如果有可能做到,我怎样才能做到呢?

7y4bm7vi

7y4bm7vi1#

不幸的是,在BigQuery中,我不相信你可以使用多个自定义分隔符/分隔符,因为它没有OR逻辑,它的目的是加载数据,而不是转换数据。
如果您肯定不想使用TRIM函数在Bigquery中转换数据,并且无法在源位置清理数据,那么另一个选择是使用pythontrim之类的程序,同时上传数据。
这些指向链接包含执行此操作所需的代码段
https://www.digitalocean.com/community/tutorials/python-trim-string-rstrip-lstrip-strip
https://towardsdatascience.com/how-to-upload-data-to-google-bigquery-using-python-in-3-steps-7138ae625fe3

相关问题