小编inv*_*c4u的帖子

在PostgreSQL中动态生成交叉表的列

我试图crosstab在PostgreSQL中创建查询,以便它自动生成crosstab列而不是硬编码.我编写了一个函数,可以动态生成我的crosstab查询所需的列列表.我们的想法是crosstab使用动态sql 在查询中替换此函数的结果.

我知道如何在SQL Server中轻松完成这项工作,但我对PostgreSQL的了解有限,阻碍了我在这方面的进展.我正在考虑将生成动态列列表的函数结果存储到变量中,并使用它来动态构建sql查询.如果有人可以指导我这样做会很棒.


-- Table which has be pivoted
CREATE TABLE test_db
(
    kernel_id int,
    key int,
    value int
);

INSERT INTO test_db VALUES
(1,1,99),
(1,2,78),
(2,1,66),
(3,1,44),
(3,2,55),
(3,3,89);


-- This function dynamically returns the list of columns for crosstab
CREATE FUNCTION test() RETURNS TEXT AS '
DECLARE
    key_id int;
    text_op TEXT = '' kernel_id int, '';
BEGIN
    FOR key_id IN SELECT DISTINCT key FROM test_db ORDER BY key LOOP …
Run Code Online (Sandbox Code Playgroud)

postgresql dynamic-sql crosstab plpgsql postgresql-9.1

19
推荐指数
2
解决办法
2万
查看次数

如何在Play Framework配置文件中为mysql db url设置autoReconnect属性?

我试图在我的Play Framework 2.0应用程序的application.conf文件中设置autoReconnect = true mysql连接属性.但它给了我以下错误:

Caused by: java.sql.SQLException: The connection property 'autoReconnect' only accepts values of the form: 'true', 'false', 'yes' or 'no'. The value 'true?useUnicode=yes' is not in this set.
Run Code Online (Sandbox Code Playgroud)

这是我在application.conf文件中的连接字符串:

db.default.url="mysql://db_user:db_user@localhost/mydb?autoReconnect=true"
Run Code Online (Sandbox Code Playgroud)

我正在尝试设置此连接参数,因为我在应用程序闲置很长时间后收到此错误:

[error] c.j.b.ConnectionHandle - Database access problem. Killing off all remaining connections in the connection pool. SQL State = 08S01
[error] application - Failed to login the user : guest
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully  
received from the server was 153,398,761 milliseconds ago.  
The last packet …
Run Code Online (Sandbox Code Playgroud)

mysql jdbc playframework-2.0

10
推荐指数
2
解决办法
5万
查看次数

BULK INSERT如何在内部工作?

有人可以解释BULK INSERT如何在内部工作,为什么它比正常的INSERT操作快得多?

此致,Shishir.

sql t-sql sql-server bulkinsert

9
推荐指数
1
解决办法
5909
查看次数

使用ThreadPoolExecutor的活动任务数

我正在使用ThreadPoolExecutor在我的Java应用程序中执行任务.我有一个要求,我想在执行程序队列中的任何时间点获取队列中的活动任务数.我查看了ThreadPoolExecutor 的javadoc,发现了两个相关的方法:getTaskCount()getCompletedTaskCount().

根据文档,我可以分别从上述两种方法中获得计划任务和已完成任务的数量.但我无法找到在任何时间点获取队列中活动任务数量的解决方案.我可以这样做:

getTaskCount() = getCompletedTaskCount() + failed tasks + active tasks
Run Code Online (Sandbox Code Playgroud)

但是,无法直接获得失败任务的数量以达到预期的计算.

我在这里错过了什么吗?

java multithreading threadpool

6
推荐指数
1
解决办法
2万
查看次数

使用 OpenCSV 解析 CSV,并在带引号的字段内添加双引号

我正在尝试使用 OpenCSV 解析 CSV 文件。其中一列以 YAML 序列化格式存储数据,并用引号引起来,因为其中可以包含逗号。它里面也有引号,所以通过加两个引号来转义。我可以在 Ruby 中轻松解析该文件,但使用 OpenCSV 我无法完全解析它。它是一个UTF-8编码的文件。

这是我的 Java 片段,它试图读取文件

CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(csvFilePath), "UTF-8"), ',', '\"', '\\');
Run Code Online (Sandbox Code Playgroud)

以下是该文件中的 2 行。我猜第一行没有被正确解析,并且""[Fair Trade Certified]""由于转义双引号而被分割。

1061658767,update,1196916,Product,28613099,Product::Source,"---
product_attributes:
-
- :name: Ornaments
  :brand_id: 49120
  :size: each
  :alcoholic: false
  :details: ""[Fair Trade Certified]""
  :gluten_free: false
  :kosher: false
  :low_fat: false
  :organic: false
  :sugar_free: false
  :fat_free: false
  :vegan: false
  :vegetarian: false
",,2015-11-01 00:06:19.796944,,,,,,
1061658768,create,,,28613100,Product::Source,"---
product_id:
retailer_id:
store_id:
source_id: 333790
locale: en_us
source_type: Product::PrehistoricProductDatum
priority: 1
is_definition:
product_attributes: …
Run Code Online (Sandbox Code Playgroud)

java csv opencsv

5
推荐指数
1
解决办法
7584
查看次数

在动态查询中将db查询值分配给t-sql变量

我有这个要求在存储过程中实现.动态查询数据库以获取表的计数,将其存储在t-sql变量中,然后根据该变量做出一些决定.

这是我正在处理的存储过程.这是一些错误,因为我认为没有一种简单的方法可以将tsql动态查询的结果分配给变量.

CREATE PROCEDURE test
AS
BEGIN
 DECLARE @sql VARCHAR(255)
 DECLARE @cnt int
 SET @sql = 'SELECT COUNT(1) FROM myTable'
 SET @cnt = EXEC(@sql)
 IF (@cnt > 0)
     PRINT 'A'
 ELSE
     PRINT 'B'
END
GO
Run Code Online (Sandbox Code Playgroud)

有人能告诉我是否有更简单的方法使用T-SQL实现这一目标?

谢谢.

sql t-sql

3
推荐指数
1
解决办法
5186
查看次数