pg_bulkload 官方文档

pg_bulkload 3.2devel 首页> pg_bulkload

名称

pg_bulkload   
  • 它为PostgreSQL用户提供高速数据加载功能。

概要

pg_bulkload [选项] [controlfile]

描述

重要说明:在流复制环境下,pg_bulkload无法正常工作。详情请参阅这里

pg_bulkload用于将大量数据加载到数据库。 您可以选择是否检查数据库约束以及在加载期间忽略多少错误。 例如,当您将数据从另一个数据库复制到PostgreSQL时,可以跳过完整性检查的性能。 另一方面,您可以在加载不干净的数据时启用约束检查。

pg_bulkload的最初目标是PostgreSQL中COPY命令的更快的替代方案, 但是版本3.0或更高版本具有一些ETL功能,如输入数据验证和使用过滤器函数的数据转换。

在版本3.1中,pg_bulkload可以将加载数据转换为二进制文件,该文件可以用作pg_bulkload的输入文件。如果在将数据转换为二进制文件时检查加载数据是否有效,则可以在将加载数据从二进制文件加载到表时跳过该检查。这将减少加载时间本身。在3.1版本中,并行加载比以前更有效。

在旧版本的3.1有一些错误。请检查版本说明,并使用较新版本。

例子

pg_bulkload提供了两个程序。

postgresql脚本

这是一个用于pg_ctl的包装器命令,它启动和停止PostgreSQL服务器。 postgresql脚本内部调用pg_ctl。 postgresql脚本提供非常重要的pg_bulkload功能,即恢复。为了提高性能,pg_bulkload绕过了一些PostgreSQL的内部功能,如WAL。因此,pg_bulkload需要在执行通常的PostgreSQL恢复之前提供单独的恢复过程。 postgresql脚本提供此功能。

您必须看到下面的“限制”,特别是如果您在DIRECT或PARALLEL加载模式下使用pg_bulkload。它需要特殊的数据库恢复过程。请注意,DIRECT模式是默认设置。

pg_bulkload

该程序用于加载数据。 在内部,它调用PostgreSQL的用户定义函数pg_bulkload() 并执行加载。 pg_bulkload()函数将在pg_bulkload安装期间安装。

可以通过以下三个步骤使用pg_bulklad:

编辑包含用于数据加载的settig的控制文件“sample_csv.ctl”或“sample_bin.ctl”。您可以指定表名称,输入文件的绝对路径,输入文件的描述等。
假设有一个目录$ PGDATA / pg_bulkload,因为创建了加载状态文件。
以控制文件作为参数执行命令。相对路径可用于参数。

$ pg_bulkload sample_csv.ctl
注意:散装装载开始
注意:BULK LOAD END
0跳过行。
8行已成功加载。
0由于解析错误,未加载行。
0由于重复错误,未加载行。
0用新行替换行。

命令行选项

pg_bulkload具有以下命令行选项:

加载选项

加载数据的选项。

-i INPUT --input = INPUT --infile = INPUT 从中加载数据的源。与控制文件中的“INPUT”相同。 -O输出 --output = OUTPUT 将数据加载到的目标。与控制文件中的“OUTPUT”相同。 -1 LOGFILE --logfile = LOGFILE 写结果日志的路径。与控制文件中的“LOGFILE”相同。 -P PARSE_BADFILE --parse-badfile = PARSE_BADFILE 用于写入无法正确解析的不良记录的路径。与控制文件中的“PARSE_BADFILE”相同。 -u DUPLICATE_BADFILE --duplicate-badfile = DUPLICATE_BADFILE 在索引重建期间写入与唯一约束冲突的坏记录的路径。与控制文件中的“DUPLICATE_BADFILE”相同。 -o“key = val” --option =“key = val” 控制文件中可用的任何选项。您可以传递多个选项。

连接选项

连接到服务器的选项。

-d dbname --dbname dbname 指定要连接的数据库的名称。如果未指定,则从环境变量PGDATABASE读取数据库名称。如果未设置,则使用为连接指定的用户名。 -h host --host host 指定运行服务器的计算机的主机名。如果值以斜杠开头,它将用作Unix域套接字的目录。 -p port --port port 指定服务器在其上侦听连接的TCP端口或本地Unix域套接字文件扩展名。 -U username --username username 要连接的用户名称。 -W --password

强制pg_bulkload在连接到数据库之前提示输入密码。
此选项从不是必需的,因为如果服务器要求密码认证,
pg_bulkload将自动提示输入密码。
但是,vacuumdb会浪费一个连接尝试,发现服务器需要一个密码。在某些情况下,值得打字-W以避免额外的连接尝试。

通用选项

-e --echo Echo命令发送到服务器。 -E --elevel 从DEBUG,INFO,NOTICE,WARNING,ERROR,LOG,FATAL和PANIC中选择输出消息等级。默认值为INFO。 --help 显示程序的使用。 --version

显示程序的版本号。

控制文件

您可以指定以下加载选项。 控制文件可以指定绝对路径或相对路径。 如果通过相对路径指定它,它将相对于执行pg_bulkload命令的当前工作目录。 如果不指定控制文件,您应该通过pg_bulkload的命令行参数传递必需的选项。

以下参数在控制文件中可用。"#" 后的字符将被忽略为每行中的注释。 共同

TYPE = CSV | BINARY | FIXED |功能 输入数据的类型。默认值为CSV。

    CSV:从CSV格式的文本文件加载
    BINARY | FIXED:从固定的二进制文件加载
    FUNCTION:从函数的结果集中加载。
    如果使用它,INPUT必须是一个表达式来调用函数。

INPUT | INFILE = path | stdin | [schemaname。 ] function_name(argvalue,...) 从中加载数据的源。始终需要。根据TYPE选项,该值被视为如下所示:

    服务器中的文件:这是服务器中的文件路径。
	如果它是相对路径,则在控制文件中指定时,它将是相对于控制文件的相对路径,
	或者在命令行参数中指定时,它将是当前工作目录的相对路径。 
	PostgreSQL服务器的用户必须具有该文件的读取权限。仅当“TYPE = CSV”或“TYPE = BINARY”时可用。

    pg_bulkload命令的标准输入:“INPUT = stdin”表示pg_bulkload将通过网络从pg_bulkload客户端程序的标准输入读取数据。当输入文件和数据库位于不同的服务器中时,应使用此表单。仅当“TYPE = CSV”或“TYPE = BINARY”时可用。例如:
$ pg_bulkload csv_load.ctl <DATA.csv

SQL函数:使用返回输入数据集的参数指定SQL函数。仅当“TYPE = FUNCTION”时可用。以下示例使用内置函数,但也可以使用任何用户定义的函数。请注意,您可能需要使用C语言而不是PL / pgSQL开发这些函数,因为该函数必须使用SFRM_ValuePerCall模式进行流式加载。

    TABLE = sample_table
    类型=功能
    WRITER = DIRECT
    INPUT = generate_series(1,1000)#从1到1000的序号
    ... ...

WRITER | LOADER = DIRECT | BUFFERED | BINARY |平行 加载数据的方法。默认值为DIRECT。

    DIRECT:直接将数据加载到表。跳过共享缓冲区并跳过WAL日志记录,但需要自己的恢复过程。这是默认值和原始旧版本的模式。
    BUFFERED:通过共享缓冲区将数据加载到表。使用共享缓冲区,写入WAL,并使用原始的PostgreSQL WAL恢复。
    BINARY:将数据转换为二进制文件,可以用作要从中加载的输入文件。创建加载输出二进制文件所需的控制文件示例。此示例文件在与二进制文件相同的目录中创建,其名称为<binary-file-name> .ctl。
    PARALLEL:与“WRITER = DIRECT”和“MULTI_PROCESS = YES”相同。如果指定了PARALLEL,则忽略MULTI_PROCESS。如果将密码认证配置为要加载的数据库,则必须设置密码文件。有关详细信息,请参阅限制。

OUTPUT |“ TABLE = {[schema_name。 ] table_name | outfile} 将数据加载到的目标。总是需要。根据WRITER(或LOADER)选项,该值被视为如下所示:

    要加载到的表:指定要加载到的表。如果省略schema_name,则使用search_path中的第一个匹配表。只有在WRITER为DIRECT,BUFFERED或PARALLEL时,才能将数据加载到表中。
    服务器中的文件:指定服务器中输出文件的路径。如果它是一个相对路径,它将被解释与INPUT选项相同的方式。运行PostgreSQL的OS用户必须对指定文件的父目录具有写入权限。只有在WRITER为BINARY时,才能将数据加载(转换)到文件。

SKIP | OFFSET = n 跳过输入行的数量。默认值为0.您不能同时指定“TYPE = FUNCTION”和SKIP。 LIMIT | LOAD = n 要加载的行数。默认值为INFINITE,即所有数据将被加载。即使使用TYPE = FUNCTION,此选项也可用。 ENCODING = encoding 指定输入数据的编码。检查指定的编码是否有效,如果需要,将输入数据转换为数据库编码。默认情况下,输入数据的编码既不验证也不转换。如果可以确保输入数据在数据库编码中进行编码,则可以通过不指定此选项以及跳过编码验证和转换来减少加载时间。注意,只有当INPUT是stdin时,默认情况下才使用client_encoding作为输入数据的编码。您不能同时指定“TYPE = FUNCTION”和ENCODING。 有关有效的编码名称,请参阅内置转换。这里是选项值和实际行为: DB编码 SQL_ASCII非SQL_ASCII ENCODING未指定既未选中也未转换,未选中或未转换 SQL_ASCII既未选中也未转换仅选中 非SQL_ASCII,与仅作为DB选中的选项相同 非SQL_ASCII,不同于DB只检查并转换 FILTER = [schema_name。 ] function_name [(argtype,...)] 指定过滤器函数以转换输入文件中的每一行。您可以省略argtype的定义,只要函数名在数据库中是唯一的。如果未指定,则输入数据将直接解析为加载目标表。参见如何编写FILTER函数来创建FILTER函数。 您不能同时指定“TYPE = FUNCTION”和FILTER。此外,CSV选项中的FORCE_NOT_NULL不能与FILTER选项一起使用。 CHECK_CONSTRAINTS = YES |没有 指定在加载期间是否检查CHECK约束。默认值为NO。您不能同时指定“WRITER = BINARY”和CHECK_CONSTRAINTS。 PARSE_ERRORS = n 在解析,编码检查,编码转换,FILTER函数,CHECK约束检查,NOT NULL检查或数据类型转换期间抛出错误的导入元组数。无效的输入元组未加载并记录在PARSE BADFILE中。默认值为0.如果有等于或大于该值的解析错误,则已提交已加载的数据,并且不加载剩余的元组。 0表示不允许错误,-1和INFINITE表示忽略所有错误。 DUPLICATE_ERRORS = n 违反唯一约束的导入元组数。冲突的元组从表中删除并记录在DUPLICATE BADFILE中。默认值为0.如果存在等于或大于该值的唯一违例,则回滚整个负载。 0表示不允许违反,-1和INFINITE表示忽略所有违规。您不能同时指定“WRITER = BINARY”和DUPLICATE_ERRORS。 ON_DUPLICATE_KEEP = NEW |旧 指定如何处理违反唯一约束的元组。删除的元组记录在BAD文件中。默认值为NEW。如果启用该选项,还需要将DUPLICATE_ERRORS设置为大于0。您不能同时指定“WRITER = BINARY”和ON_DUPLICATE_KEEP。

    新:在输入数据中保留元组,并删除相应的现有元组。当两个被破坏的元组都在数据中时,保留后者。
    OLD:保留现有元组,并删除输入数据中的元组。

LOGFILE = path 写结果日志的路径。如果由相对路径指定,则将其视为与INPUT相同。默认值为$ PGDATA / pg_bulkload / <timestamp> _ <dbname> _ <schema> _ <table> .log。 PARSE_BADFILE = path BAD文件的路径记录在解析,编码检查,编码转换,FILTER函数,CHECK约束检查,NOT NULL检查或数据类型转换期间导致错误的无效记录。文件的格式与输入源文件相同。如果由相对路径指定,则将其视为与INPUT相同。默认为$ PGDATA / pg_bulkload / <timestamp> _ <dbname> _ <schema> _ <table> .bad。<extension-of-infile>。 DUPLICATE_BADFILE = path 在索引重建期间写入与唯一约束冲突的坏记录的路径。文件的格式始终为CSV。如果由相对路径指定,则将其视为与INPUT相同。默认值为$ PGDATA / pg_bulkload / <timestamp> _ <dbname> _ <schema> _ <table> .dup.csv。您不能同时指定“WRITER = BINARY”和DUPLICATE_BADFILE。 TRUNCATE = YES |没有 如果为YES,使用TRUNCATE命令从目标表中删除所有行。如果否,不做任何事。默认值为NO。您不能同时指定“WRITER = BINARY”和TRUNCATE。 VERBOSE = YES |没有 如果是,在服务器日志中写错误的元组。如果否,不要在serverlog中写它们。默认值为NO。 MULTI_PROCESS = YES |没有 如果是,我们使用多线程并行地进行数据读取,解析和写入。如果否,我们只使用单线程,而不是做并行处理。默认值为NO。如果WRITER为PARALLEL,则忽略MULTI_PROCESS。如果将密码认证配置为要加载的数据库,则必须设置密码文件。有关详细信息,请参阅限制。

CSV输入格式

DELIMITER = delimiter_character 单个ASCII字符,用于分隔文件每行(行)中的列。默认值为逗号。加载制表符分隔格式文件(TSV)时,可以将DELIMITER设置为制表符字符。然后,您需要双引号标签:

DELIMITER =“”#双引号制表符

您还可以将DELIMITER指定为带有$'\ t'语法的命令行-o选项。

$ pg_bulkload tsv.ctl -o $'DELIMITER = \ t'

QUOTE = quote_character 指定ASCII引号字符。默认值为双引号。 ESCAPE = escape_character 指定应在QUOTE数据字符值之前出现的ASCII字符。默认值为双引号。 NULL = null_string 表示空值的字符串。默认值是一个没有引号的空值。 FORCE_NOT_NULL =列 处理每个指定的列,就好像它不是NULL值。可根据需要提供多个列。 FILTER不能与此选项一起使用。

二进制输入格式

COL = type [(size)] [NULLIF {'null_string'| null_hex}] 输入文件的列定义从左到右。定义包括类型名称,偏移量和长度(以字节为单位)。 CHAR和VARCHAR表示输入数据是文本。否则,它是一个二进制数据。如果二进制,endian必须在服务器和数据文件之间匹配。

    CHAR | CHARACTER:字符串修剪尾部空格。长度总是必需的。
    VARCHAR | CHARACTER VARYING:一个保存尾随空格的字符串。长度始终是必需的。
    SMALLINT | SHOFT:2字节的有符号整数。
    INTEGER | INT:2或4或8个字节的有符号整数。默认值为4。
    BIGINT | LONG:8个字节的有符号整数。
    UNSIGNED SMALLINT | SHORT:2字节中的无符号整数。
    UNSIGNED INTEGER | INT:2或4字节的无符号整数。默认值为4。
    FLOAT | REAL:4或8字节的浮点数。默认值为4。
    DOUBLE:8个字节的浮点数。

类型的长度和偏移量可以指定如下:

    TYPE:TYPE,默认长度如下。
    TYPE(L):带有L个字节的TYPE如下。
    TYPE(S + L):L字节,从行开始偏移S个字节
    TYPE(S:E):从S字节开始,到E字节结束。

表达NULL的字符串可以指定如下:

    NULLIF'null_string':当类型为CHAR或VARCHAR时,指定表示NULL的字符串。字符串的长度必须与类型的长度相同。
    NULLIF null_hex:当类型不是CHAR和VARCHAR时,指定表示NULL的十六进制值。十六进制值的长度必须与类型的长度相同。

此外,为了向后兼容,“COL N”可用,与COL CHAR(N)相同。

PRESERVE_BLANKS = YES |没有 YES将以下“COL N”视为“COL CHAR(N)”,将NO视为“COL VARCHAR(N)”。默认值为NO。 STRIDE = n 一行的长度。如果要截断行尾,请使用。默认值为整行,表示COL的总数。

二进制输出格式

OUT_COL = type [(size)] [NULLIF {'null_string'| null_hex}] 输出文件的列定义从左到右。定义包括类型名称,偏移量和长度(以字节为单位)。 CHAR和VARCHAR表示输入数据是文本。否则,它是一个二进制数据。如果二进制,endian必须在服务器和数据文件之间匹配。

    CHAR | CHARACTER:固定长度字符串。必须指定长度。如果要存储的字符串短于声明的长度,那么值将以空格填充。 “COL = CHAR(size)”将在控制文件的样本中输出。
    VARCHAR | CHARACTER VARYING:fixed-length string。必须指定长度。如果要存储的字符串短于声明的长度,那么值将以空格填充。 “COL = VARCHAR(size)”将在控制文件的样本中输出。
    SMALLINT | SHOFT:2字节的有符号整数。
    INTEGER | INT:2或4或8个字节的有符号整数。默认值为4。
    BIGINT | LONG:8个字节的有符号整数。
    未命名SMALLINT | SHORT:2字节中的无符号整数。
    UNSIGNED INTEGER | INT:2或4字节的无符号整数。默认值为4。
    FLOAT | REAL:4或8字节的浮点数。默认值为4。
    DOUBLE:8个字节的浮点数。

表达NULL的字符串可以指定如下。如果省略,但输入NULL,则将在PARSE_BADFILE中将NULL记录为无效数据。

    NULLIF'null_string':当类型为CHAR或VARCHAR时,指定表示NULL的字符串。字符串的长度必须与类型的长度相同。
    NULLIF null_hex:当类型不是CHAR和VARCHAR时,指定表示NULL的十六进制值。十六进制值的长度必须与类型的长度相同。

环境变量

后续变量影响 pg_bulkload。

PGDDTABASE PGHOST PGPORT PGUSER

默认连接参数

这个实用程序,像大多数其他PostgreSQL实用程序,也使用libpq支持的环境变量(请参阅环境变量)。 限制 退出pg_bulkload的代码

成功加载后pg_bulkload返回0。当有一些解析错误或重复的错误,即使加载本身完成, 它也返回3与WARNING消息。 请注意,跳过的行和替换的行(使用ON_DUPLICATE_KEEP = NEW)不会被视为错误; 退出状态码为0。

当存在不可继续的错误时,加载程序会引发错误消息。 返回代码通常为1,因为在加载数据期间,在数据库服务器中发生许多错误。 下表显示了pg_bulkload可以返回的代码。

返回码描述 0成功 1在PostgreSQL中运行SQL期间发生错误 2无法连接到PostgreSQL 3成功,但无法加载某些数据 直接装载

如果使用直接装载模式(WRITER = DIRECT或PARALLEL),则必须注意以下事项: PostgreSQL启动顺序

当pg_bulkload崩溃,并且一些.loadstatus文件保留在 $PGDATA/pg_bulkload 中时, 数据库必须通过pg_bulkload自己的恢复与“pg_bulkoad -r”命令恢复, 然后再调用pg_ctl start。 您必须使用postgresql脚本启动和停止PostgreSQL, 它会正确地调用“pg_bulkload -r”和“pg_ctl start”。 我们建议不要直接使用pg_ctl。

如果在Windows操作系统中使用pg_bulkload, postgresql脚本不包括在pg_bulkload包中。 所以你必须手动调用“pg_bulkload -r”。

PITR /复制

由于绕过WAL,因此不能通过PITR进行归档恢复。 这并不意味着它可以做PITR没有加载表数据。 如果你想使用PITR,在加载后通过pg_bulkload对数据库进行完全备份。 如果使用流复制,则需要根据在pg_bulkload之后执行的备份集重新创建备用数据库。

在 $PGDATA/pg_bulkload中加载状态文件

您不能删除 $PGDATA/pg_bulkload 目录中的加载状态文件 (* .loadstatus)。 此文件在 pg_bulkload崩溃恢复中需要。

不要使用 kill -9

不要使用“kill -9”尽可能多地终止pg_bulkload命令。 如果这样做,您必须调用postgresql脚本执行pg_bulkload恢复并重新启动PostgreSQL继续。

当MULTI_PROCESS = YES时,认证可能失败

当MULTI_PROCESS = YES并且需要密码从localhost连接到要加载的数据库时, 即使在提示中正确输入密码,身份验证也会失败。 为了避免这种情况,请配置以下任一项。

使用 "trust" 方法验证来自localhost的连接

在UNIX环境中,来自localhost的连接使用UNIX域套接字,
在Windows中,它使用TCP / IP环回地址。在UNIX中,将以下行添加到pg_hba.conf中。

#TYPE DATABASE USER CIDR-ADDRESS METHOD [for UNIX]
本地所有foo信任

在Windows中,将以下行添加到pg_hba.conf中。

#TYPE DATABASE USER CIDR-ADDRESS METHOD [for Windows]
host all foo 127.0.0.1/32 trust

在.pgpass文件中指定密码

如果出于安全原因而不想使用“trust”方法,请使用“md5”或“password”作为身份验证方法,
并在.pgpass文件中指定密码。
注意.pgpass文件必须在运行PostgreSQL服务器的OS用户(通常为“postgres”用户)的主目录中。
例如,如果pg_bulkload连接到在端口5432上运行的服务器作为密码为“foopass”的数据库用户“foo”,
则管理员可以将以下行添加到.pgpass文件:

localhost:5432:*:foo:foopass

不要使用“WRITER = PARALLE”
使用除“WRITER = PARALLEL”之外的加载方法。

数据库约束

默认情况下,在数据加载期间仅强制执行唯一约束和非NULL约束。 您可以设置“CHECK_CONSTRAINTS = YES”来检查CHECK约束。无法检查外键约束。用户有责任提供有效的数据集。

细节 内部

这里是pg_bulkload中的内部结构。

以下是从文件,stdin或SQL函数加载数据的系统结构:

文件
Stdin
SQL函数

如何编写FILTER函数

写入FILTER函数时,有一些注释和警告:

输入文件中的记录逐个传递到FILTER函数。
当FILTER函数发生错误时,不会加载传递的记录并将其写入PARSE BADFILE。
FILTER函数必须返回记录类型或某种复合类型。此外,实际记录类型必须与目标表定义匹配。
如果FILTER函数返回NULL,那么将加载在所有列中具有NULL的记录。
支持带有默认参数的函数。如果输入数据的列数少于函数的参数,将使用默认值。
不支持VARIADIC函数。
不支持SETOF功能。
不支持具有通用类型(任何,任何元素等)的函数。
FILTER函数可以用任何语言实现。 SQL,C,PLs是确定的,但你应该尽可能快地写函数,因为它们被调用了很多次。
您只能指定FILTER或FORCE_NOT_NULL选项之一。如果您需要该功能,请重新实现FORCE_NOT_NULL兼容的FILTER功能。

这里有一个FILTER函数的例子。

CREATE FUNCTION sample_filter(integer,text,text,real DEFAULT 0.05)RETURNS记录 AS $$ SELECT $ 1 * $ 4,upper($ 3)$$ LANGUAGE SQL;

安装

pg_bulkload可以像标准contrib模块一样安装。 要求

pg_bulkload安装假定:

PostgreSQL必须事先安装好,
数据库已使用initdb初始化。

从源代码安装

你可以用pgxs构建pg_bulkload。

$ cd pg_bulkload $ make USE_PGXS = 1 $ su $ make USE_PGXS = 1安装

然后,将函数注册到数据库。

$ postgresql start $ psql -f $ PGSHARE / contrib / pg_bulkload.sql database_name

您还可以使用CREATE EXTENSION注册函数(必须是数据库超级用户)。

$ psql database_name database_name =#CREATE EXTENSION pg_bulkload;

从RPM包安装

它可以从RPM包中安装。请在安装pg_bulkload之前检查postgresql包是否已安装。

以下命令将安装pg_bulkload:

#rpm -ivh pg_bulkload- <version> .rpm

您可以使用以下命令检查模块是否已安装:

#rpm -qa | grep pg_bulkload

您可以找到安装文件的位置:

#rpm -qs pg_bulkload

最后,向数据库注册函数。脚本pg_bulkload.sql位于由rpm -qs显示的路径中。在以下示例中使用$ PGSHARE:

$ postgresql start $ psql -f $ PGSHARE / contrib / pg_bulkload.sql database_name

您还可以使用CREATE EXTENSION注册函数(必须是数据库超级用户)。

$ psql database_name database_name =#CREATE EXTENSION pg_bulkload;

要求

PostgreSQL版本 PostgreSQL 8.3,8.4,9.0,9.1,9.2,9.3,9.4 操作系统 RHEL 5/6/7

发行说明

3.1.8

修正Bug CHECK_CONSTRAINTS = YES:当在PostgreSQL 9.4.1,9.3.6,9.2.10,9.1.15,9.0.19上加载CHECK_CONSTRAINTS = YES时,PostgreSQL服务器可能会崩溃。

3.1.7

支持PostgreSQL 9.4。

3.1.6

修复WRITER = PARALLEL的错误:pg_bulkload没有正确处理PGHOST环境变量。因此,当unix_socket_directory,unix_socket_directories在9.3之后从/ tmp更改时,它不工作。
修复过滤器函数的错误:如果pg_bulkload使用非SQL编写的过滤器函数,则会失败。这发生在PostgreSQL 9.2.4及之后。
支持PostgreSQL 9.4beta1

3.1.5

支持PostgreSQL 9.3。
修复关于加载到UNLOGGED表的错误

3.1.4

修复针对PostgreSQL 9.2.4的错误使用由SQL编写的FILTER函数时发生了内存泄漏。
修复postgresql脚本有now-defunct选项的代码。

3.1.3

修复WRITER = PARALLEL的错误。存在负载数据消失的情况。
修复WRITER = BUFFERED的错误。有一种情况是更新表上的索引在流式复制的从节点上损坏。

也可以看看

转载于:https://my.oschina.net/innovation/blog/761508

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值