保存没有NULL值的sql文件

时间:2013-12-02 19:15:32

标签: postgresql null pg-dump

当我跑步时

pg_dump -O --column-inserts -U root map --file=

还会打印任何值为NULL的内容。 我可以创建一个SQL文件,以便不包含NULL的列吗?

--column-inserts会创建一个发布列名和数据的查询。

示例:

说我有一张桌子

Name | class | element | Id

Nee     V       NULL      102
Mat     VI      NULL      103
...

当我导出sql文件时 数据插入行看起来像

INSERT INTO table (Name, class, element, Id) VALUES ('Nee', 'V', NULL, 102);

我想要的是

INSERT INTO table (Name, class, Id) VALUES ('Nee', 'V', 102);

这样sql文件不包含任何要放入数据库的NULL元素。 这是必需的,因为在系统数据库中,我们使用了很多列,而我的代码只更改了其中的一些。因此,sql生成器有很多NULL。

1 个答案:

答案 0 :(得分:0)

首先,没有选择。其次,插入看起来不像是使得或多或少无法自动处理转储以达到你想要的效果。

pg_dump默认使用隐式列列表创建插入,即:

INSERT INTO test VALUES ('test2 test', 'foobar');

这没关系,因为它按照表声明中指定的顺序使用列。但是,它也意味着您不能省略列。所以这不是你能用sed自动快速做的事情。

在此确定适当的解决方案取决于您正在尝试解决的问题。在没有要解决的问题的情况下,我能说的最好的是“甚至不尝试这样做”。对于您的问题,可能有更好的解决方案。