node.js - 从nodeJs中的stdin批量复制psql数据
问题描述
我需要通过节点应用程序不时地将数据加载到 psql db 中。我正在使用node-postgres包,它似乎可以很好地处理INSERT
语句。
由于我的 db_dum 很大,我需要转到COPY
pg_dump 中的语句(以获得更好的性能),但是在尝试使用 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 转储文件的节点应用程序的伪代码:
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;
在节点应用程序中使用语句加载数据的可能解决方案
任何建议/意见表示赞赏。
解决方案
推荐阅读
- reactjs - React 和 Jest - 使用 PropTypes.instanceOf 测试组件
- python - 创建后使用 Button 将 HBox 添加到 VBox
- javascript - 如何将 React 组件连接到 Laravel Blade
- angular - Angular 8:router.navigate,跳过状态更改但保持“历史步骤”
- python - 遍历一个函数返回包含两个列表的 2 元组?
- php - 为什么我无法从 Jquery 获取价值到 php?
- r - 独立于出现顺序计算 Bigrams
- javascript - 我的代码仅在控制台中执行,但在 .js 文件中不起作用
- reactjs - 无法从其他文件夹加载文件
- c - 在 C 中搜索子字符串