【发布时间】:2020-03-29 02:30:44
【问题描述】:
我正在使用 pymysql 游标将数据从 mysql 导出到 csv,如下所示:
cur = conn.cursor()
c = csv.writer(open(csvFilePath, "w",newline='',encoding='utf-8'))
for row in cur:
c.writerow(list(row))
但是每当我在 mysql 列中遇到空值时,光标都会在 csv 中写入一个空字符串“”。我想在 csv 中写入“NULL”字符串,以便在将其上传到另一个数据库(如 redshift)时将其转换为 null。
【问题讨论】:
-
空字符串是唯一真正有意义的东西。开始时该字段没有任何价值。另一方面,字符串“NULL”是一个实际值,包含 4 个字母。一,我可能会补充说,这可能会作为姓氏出现,多年来导致一些非常有趣的情况。
-
为什么你不应该发出
"NULL"而实际上没有数据:These unlucky people have names that break computers -
我想区分实际在数据中的空字符串和 NULL 值(数据丢失)。如果有一种方法可以将数据从 mysql 写入 csv 并将 csv 上传到 redshift,同时在 redshift 中将空字符串保持为空字符串并将空值保持为 null,那就太好了。无论如何感谢您的建议。
-
你所说的意味着你有一个严重的问题——你没有空值。如果
pymysql返回一个空字符串,则表示该字段有一个空字符串。或者查询已经用空字符串替换了 NULL。您现在无法知道哪些值为 null。