我需要通过节点应用程序不时地将数据加载到psql db中。
我正在使用node-postgres程序包,该程序包似乎可以与INSERT
语句一起正常工作。
由于我的db_dum很大,因此我需要移动到pg_dump中的COPY
语句(以获得更好的性能),但是在尝试使用Node中的pg
包加载数据时遇到各种错误-如果我使用命令行psql
我拥有的psql转储文件很大,其中包含COPY
条语句:
COPY hibernate.address (id, create_timestamp,
update_timestamp, street_address_line_1, street_address_line_2, city, state_code, postal_code, postal_code_suffix, country_code, latitude, longitude, updated_by_base_user_id) FROM stdin;
379173 2017-02-20 02:34:17.715-08 2018-01-20 08:34:17.715-08 3 Brewster St \N Phoenix AZ 17349 \N US \N \N 719826
/.
这是运行sql dump文件的节点应用程序的伪代码:
const sqlFile = fs.readFileSync('data_dump.sql').toString();
const connectionString = `postgres://<user>:${PgPassword}@${pgIpAndPort}/<table>`;
const client = new pg.Client(connectionString);
lient.connect();
client.query(sqlFile);
这是我使用的示例pg_dump
命令(仅用于数据-无模式):
pg_dump -U <user> --data-only --disable-triggers -n hibernate <table_name> > <dump_file.sql>
但是当我尝试通过节点应用程序加载数据时它不起作用
我知道--column-inserts
可以解决问题,但这会大大降低性能。
因此,我正在寻找在结点应用中使用COPY tbl FROM stdin;
语句加载数据的可能解决方案
任何建议/评论都值得赞赏。