我正在使用 SQL 命令將 CSV 檔案復制到 Postgres 中,并且該檔案有兩種不同的可能性,我想將其視為 null。第一個只是一個空格(兩個連續的逗號)。第二個是字串“PrivacySuppressed”。
我試過像這樣匯入 CSV:
COPY c2c.field FROM 'my_csv.csv' NULL AS 'PrivacySuppressed' HEADER csv;
這里的問題是,雖然 PrivacySuppressed 被轉換為 null,但空白被視為空白字串,我得到以下錯誤:
ERROR: invalid input syntax for type integer: ""
如何匯入這樣的具有多個 NULL 可能性的 CSV?我可以通過洗掉 PrivacySuppressed 字串來修改原始 CSV,但我想將其保留在資料中(這樣如果我們決定更改應用程式,我們仍然可以訪問它)。
uj5u.com熱心網友回復:
一個例子:
cat csv_null_test.csv
1,,9
2,"19","5"
3,"PrivacySuppressed","5"
4,"19","15"
5,"19","5"
create table csv_null_test(id integer, fld_1 varchar, fld_2 integer);
\copy csv_null_test from 'csv_null_test.csv' with(format 'csv');
COPY 5
\pset null
Null display is "NULL".
select * from csv_null_test ;
id | fld_1 | fld_2
---- ------------------- -------
1 | NULL | 9
2 | 19 | 5
3 | PrivacySuppressed | 5
4 | 19 | 15
5 | 19 | 5
(5 rows)
update csv_null_test set fld_1 = nullif(fld_1, 'PrivacySuppressed') where fld_1 = 'PrivacySuppressed' ;
UPDATE 1
select * from csv_null_test ;
id | fld_1 | fld_2
---- ------- -------
1 | NULL | 9
2 | 19 | 5
4 | 19 | 15
5 | 19 | 5
3 | NULL | 5
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/450559.html
標籤:sql PostgreSQL CSV
上一篇:使用與前n個數字PostgreSQL的部分字串匹配進行連接
下一篇:Postgis不只使用索引掃描
