2

当我跑

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。

4

1 回答 1

0

首先,没有选择。其次,插入看起来不像,这使得自动处理转储以执行您想要的操作或多或少是不可能的。

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

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

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

在这里确定一个合适的解决方案取决于你到底要解决什么问题。在没有要解决的问题的情况下,我能说的最好的就是“甚至不要尝试这样做”。您的问题可能有更好的解决方案。

于 2013-12-20T15:08:39.077 回答