我想使用RazorSQL连接到我的远程服务器上运行的数据库.我使用以下命令在localhost上创建SSH隧道:
ssh -L 1111:remote.server.com:5432 myuser@remote.server.com
Run Code Online (Sandbox Code Playgroud)
我通过RazorSQL的GUI配置我的连接,指定localhost
为主机和1111
端口.当我单击"连接"时,会出现以下错误消息:
ERROR: An error occurred while trying to make a connection to
the database:
JDBC URL: jdbc:postgresql://localhost:1111/myuser
FATAL:
no pg_hba.conf entry for host "aaa.bbb.ccc.ddd",
user "myuser", database "mydatabase", SSL off
Run Code Online (Sandbox Code Playgroud)
哪里aaa.bbb.ccc.ddd
是远程服务器的IP地址.
更重要的是,我不允许更改pg_hba.conf
文件的内容.这就是目前的样子:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
@remove-line-for-nolocal@# "local" is for Unix domain socket connections only
@remove-line-for-nolocal@local all all @authmethod@
# IPv4 local connections:
host all all 127.0.0.1/32 @authmethod@
# IPv6 local connections:
host all all …
Run Code Online (Sandbox Code Playgroud) 我在其中有3列我的PostgreSQL数据库中的表- c_uid
,c_defaults
和c_settings
.c_uid
只是存储用户的名称,并且c_defaults
是一段长文本,其中包含该用户的大量数据.
我必须从bash脚本执行一个语句,该脚本根据值选择c_defaults
列的c_uid
值,这需要由数据库用户'postgres'完成.
在CLI上,我可以执行以下操作:
[mymachine]# su postgres
bash-4.1$psql
postgres=#\c database_name
You are now connected to database "database_name" as user "postgres".
database_name=#SELECT c_defaults FROM user_info WHERE c_uid = 'testuser';
Run Code Online (Sandbox Code Playgroud)
但是,如何通过bash脚本实现此目的?
目的是从该列获取信息,编辑它并将其写回该列 - 所有这些都通过bash脚本完成.
使用ExecutorService
返回的时Executors.newSingleThreadExecutor()
,如何中断它?
我想计算在count(*)
PostgreSQL数据库的2个独立表上执行的2 类SELECT查询结果之间的差异.
这就是我目前正在使用的(但是我应该能够将它全部包装到单个SELECT语句中):
SELECT "count"(*) AS val1 FROM tab1;
SELECT "count"(*) AS val2 FROM tab2;
SELECT val2-val1;
Run Code Online (Sandbox Code Playgroud)
提前致谢
我试图Terminal_GetTicket
在我的数据库中调用存储过程,但不断收到以下异常:
PropertyReferenceException: No property getTicket found for type TicketInfo
Run Code Online (Sandbox Code Playgroud)
我用一个非常简单的测试实体交叉验证了我的配置,一切似乎都运行正常,但是对于实际情况,有些事情是错误的.
这是我的域实体(TicketInfo
):
@Entity
@NamedStoredProcedureQuery(name = "TicketInfo.getTicket", procedureName = "Terminal_GetTicket", resultClasses = TicketInfo.class, parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "sys_id_game", type = Integer.class)})
public class TicketInfo {
@Id @GeneratedValue
private Long id;
private String idTicket;
private Integer externalTicketCode;
private Short sequenseAlert;
private Integer dlTimeStamp;
Run Code Online (Sandbox Code Playgroud)
所有实例变量都正确定义了它们的getter和setter,并且存储过程总共有5个输出参数匹配的属性TicketInfo
.
此外,这是我的存储库界面:
public interface TicketInfoRepository extends CrudRepository<TicketInfo, Long> {
@Transactional(timeout = 5)
@Procedure
TicketInfo getTicket(Integer sys_id_game);
}
Run Code Online (Sandbox Code Playgroud)
另外,这是我的context.xml
文件(对于Spring): …
我需要从PostgreSQL数据库的多个表中提取SQL文件.这是我到目前为止所提出的:
pg_dump -t 'thr_*' -s dbName -U userName > /home/anik/psqlTest/db_dump.sql
Run Code Online (Sandbox Code Playgroud)
但是,如您所见,所有以前缀开头的表thr
都将导出到单个统一文件(db_dump.sql
)中.我总共有近90个表来提取SQL,所以必须将数据存储到单独的文件中.
我该怎么做?提前致谢.
我有一个关于PostgreSQL 9.2中浮点数的新手问题.
是否有直接舍入浮点数的函数,即不必先将数字转换为数字类型?
另外,我想知道是否存在以任意度量单位舍入的函数,例如最接近0.05?
首先将数字转换为十进制形式时,以下查询可以完美地运行:
SELECT round(1/3.::numeric,4);
round
--------
0.3333
(1 row)
Time: 0.917 ms
Run Code Online (Sandbox Code Playgroud)
但是,我真正希望实现的是以下内容:
SELECT round(1/3.::float,4);
Run Code Online (Sandbox Code Playgroud)
目前给我以下错误:
ERROR: function round(double precision, integer) does not exist at character 8
Time: 0.949 ms
Run Code Online (Sandbox Code Playgroud)
谢谢
我们正在开发拼车服务,我们使用 PostgreSQL 作为我们的数据库管理系统来存储拼车详细信息。我们没有使用任何特殊的数据类型来存储我们的纬度和经度信息,但目前将它们保存为字符串对象。为了提高我们对地理定位数据的搜索查询的性能,我们可以使用 PostGIS 还是 PostgreSQL 是否有任何其他与位置相关的支持?在这种情况下有什么可以提高数据库性能的吗?(顺便说一句,我们正在使用 Django。)
我们的数据看起来是这样的:
Ride1
从开始pointA(lat,long)
并且去pointB(lat,long)
用routePoints(lat,long)(lat,long)
......一路走来。我们需要对这些数据进行复杂的查询,例如:
pointA1
从 A->B 的总距离的 5% 出发?和感谢您阅读本文。请帮助我为上述地理定位查询系统选择最佳数据库架构。
我有一个带有2个索引的PostgreSQL表.其中一个索引是覆盖website_id
和tweet_id
列,是一个独特的B树索引.第二个索引仅覆盖website_id
列,并且是非唯一索引.
如果第一个索引存在,第二个索引是多余的吗?换句话说,拥有第二个指数是否没有优势?
我有一个处理主实体的服务,检索与主实体关联的第一个子实体,然后返回两者。它还启动了一组可完成的Future
链,以出去并检索任何其他实体。目前,我只是采用一组预先构建的检索任务,将Future
异步包装在它们周围,然后使用CachedThreadPool
. 这很好,但是当超过 50 个用户访问服务器时,主要任务(检索主实体和第一个子实体)会因所有异步线程的运行而显着减慢。
我想知道是否有一种方法可以使异步调用以较低的优先级运行,以确保快速处理主要调用。
public CompletableFuture buildFutureTasks(P primaryEntity, List<List<S>> entityGroups)
{
ExecutorService pool = Executors.newCachedThreadPool();
CompletableFuture<Void> future = null;
for (List<S> entityGroup : entityGroups)
{
if (future == null || future.isDone())
{
future = CompletableFuture.runAsync(() ->
retrieveSubEntitiesForEntity(primaryEntity, entityGroup), pool);
}
else
{
future.thenRunAsync(() ->
retrieveSubEntitiesForEntities(primaryEntity, entityGroup), pool);
}
}
return future;
}
Run Code Online (Sandbox Code Playgroud)
这是我在 50 多个用户的情况下运行的最快速度,但它仍然大大减慢了我添加的更多用户的速度。
postgresql ×7
sql ×4
java ×3
database ×2
asynchronous ×1
bash ×1
concurrency ×1
django ×1
indexing ×1
java-8 ×1
jpa ×1
pg-dump ×1
postgis ×1
razorsql ×1
spring-data ×1
ssh ×1
tunnel ×1