我尝试使用以下命令将数据从CSV复制到Postgres表。
psql -c "\COPY team_cweo.bsa_mobile_pre_retention_asset FROM 'part-00199-8372009a-439d-49e0-9efc-141aead78131-c000.csv' CSV HEADER DELIMITER ','
CSV文件是Spark DataFrameWriter的结果。我意识到有些字段存在空值,在CSV文件中表示为**""**。但由于这一点,我得到了以下错误:
ERROR: invalid input syntax for type double precision: ""
CONTEXT: COPY bsa_mobile_pre_retention_asset, line 3, column 6281410000207
我应该如何做才能让Postgresql知道**""**是空值而不是空字符串。或者我应该在DataFrameWriter中执行一些操作,以便空值可以在CSV文件中表示为其他内容。
1条答案
按热度按时间zujrkrfu1#
是的,如果您可以选择NULL值的不同表示法,最好是空字串。无论如何,它不能包含逸出字符(预设为
"
)。然后您可以使用COPY
的NULL
选项,例如NULL '(null)'
(预设值为空字串)。如果无法执行此操作,则可以将列定义为
text
类型,然后使用但这需要重写表,这可能需要一段时间。