【发布时间】:2018-04-27 01:47:44
【问题描述】:
在this example 之后,我在 *.sql 脚本中使用 PostgreSQL 变量时遇到问题:
我想使用 BASH 脚本迭代多个 XML 数据文件
BASH 脚本将 XML 文件名分配给一个变量,然后传递给 SQL 脚本
由该 BASH 脚本调用的 SQL 脚本将这些数据加载到 PostgreSQL 中
如果我直接获取 XML 文件,没有问题;但是,我无法在我的 SQL 脚本中访问该变量:
在我的 SQL 脚本 (hmdb.sql) 中,我可以访问 PSQL 变量 :bash_var(从 BASH 脚本传递):
\echo '\nEXTERNAL VARIABLE (= "datafile", HERE):' :bash_var '\n'
和/或直接引用 XML 文件,
datafile text := 'hmdb/hmdb.xml';
但不作为变量:
datafile text := 'bash_var';
hmdb.sh
#!/bin/bash
DATA_DIR=data/
for file in $DATA_DIR/*.xml
do
bash_var=$(echo ${file##*/})
echo $bash_var
psql -d hmdb -v bash_var=$bash_var -f hmdb.sql
done
【问题讨论】:
-
我每天都要处理大量的 XML 文件,我总是发现这种方法易于实施和维护:stackoverflow.com/questions/49862106/… 这样做可以大大简化数据导入。
-
@JimJones:谢谢;有趣的时机,嗯?在您的回答(其他SO question)中提到,我也在使用
xml_split,因为我的文件很大(3.4 GB),而且我遇到了OOM问题。一旦我解决了这个问题,我会在这里发帖。 :-)
标签: xml bash postgresql xpath psql