标签: db2

在DB2中将select语句的结果导出为CSV格式

有没有什么办法可以将select语句的结果导出到CSV文件,就像在MySQL中一样.

MySQL命令;

SELECT col1,col2,coln into OUTFILE  'result.csv' 
FIELDS TERMINATED BY ',' FROM testtable t;
Run Code Online (Sandbox Code Playgroud)

csv db2 export

23
推荐指数
1
解决办法
12万
查看次数

我如何使用DB2 Explain?

我如何使用DB2的Explain函数? - 既可以运行它,也可以用它来优化查询.有没有更好的DB2工具?

我之前已经建立了查询,但是我必须告诉他们需要多长时间的唯一方法就是运行它们并计算时间 - 这几乎不是理想的.

编辑:我的答案结果是"你做不到.你没有,也无法获得访问权限." 你不喜欢官僚主义吗?

sql db2 query-optimization explain

23
推荐指数
3
解决办法
7万
查看次数

使用LIST命令显示DB2中的所有表

这很令人尴尬,但我似乎无法找到一种方法来列出DB2数据库中表的名称.这是我尝试过的:

root@VO11555:~# su - db2inst1
root@VO11555:~# . ~db2inst1/sqllib/db2profile
root@VO11555:~# LIST ACTIVE DATABASES
Run Code Online (Sandbox Code Playgroud)

我们收到此错误: SQL1092N "ROOT" does not have the authority to perform the requested command or operation.

DB2版本号如下.

root@VO11555:~# db2level
DB21085I  Instance "db2inst1" uses "64" bits and DB2 code release "SQL09071"
with level identifier "08020107".
Informational tokens are "DB2 v9.7.0.1", "s091114", "IP23034", and Fix Pack
"1".
Product is installed at "/opt/db2V9.7".

sql db2

23
推荐指数
4
解决办法
20万
查看次数

用于连接验证的简单DB2查询

我正在寻找一个简单的DB2查询,可用于测试池中的数据库连接是否仍然有效.它需要是一个通用查询,无论存在哪个数据库都会执行.

对于其他数据库服务器,我使用了'SELECT 1'或'SELECT version();'

什么是DB2的等价物?

谢谢!

sql db2

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

使用递归子查询因子进行循环检测

自从v2以来,Oracle SQL可以使用其专有的CONNECT BY语法进行分层查询.在他们最新的11g版本2中,他们添加了递归子查询因子,也称为recursive with子句.这是ANSI标准,如果我理解正确,这个也已由其他RDBMS供应商实现.

将connect-by与递归with进行比较时,我注意到使用循环检测时结果集的差异.结果连接对我来说更直观,所以我想知道Oracle的实现是否包含错误,或者这是否是标准ANSI和预期行为.因此,我的问题是,如果您可以使用其他数据库(如MySQL,DB2,SQL Server等)检查递归查询.如果这些数据库当然支持recursive with子句.

以下是它在Oracle 11.2.0.1.0上的工作原理

SQL> select *
  2    from t
  3  /

        ID  PARENT_ID
---------- ----------
         1          2
         2          1

2 rows selected.
Run Code Online (Sandbox Code Playgroud)

使用CONNECT BY语法的查询:

SQL>  select id
  2        , parent_id
  3        , connect_by_iscycle
  4     from t
  5  connect by nocycle parent_id = prior id
  6    start with id = 1
  7  /

        ID  PARENT_ID CONNECT_BY_ISCYCLE
---------- ---------- ------------------
         1          2                  0
         2          1                  1

2 rows selected.
Run Code Online (Sandbox Code Playgroud)

这看起来很直观.但是,使用新的ANSI语法,它会再返回一行:

SQL> with tr (id,parent_id) as
  2 …
Run Code Online (Sandbox Code Playgroud)

sql oracle db2 hierarchical-query

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

插入时db2 SQLCODE -668

当我将数据插入表(db2)时,我收到此错误:

Message: Operation not allowed for reason code "7" on 
table "ELSAG.ICGR1106".. SQLCODE=-668, SQLSTATE=57016, DRIVER=3.50.152,...
Run Code Online (Sandbox Code Playgroud)

当我用Google搜索它时,我发现之前的ALTER TABLE语句试图将列添加到具有使用行属性敏感性定义的编辑过程的表中.没有列可以添加到此表.

有没有办法纠正它?

一旦我放下并重新创建表格,我可以再次插入.

提前致谢.

sql db2

22
推荐指数
3
解决办法
4万
查看次数

如何使用jdbc中的ResultSet.getBinaryStream()从所有列获取值?

如何使用jdbc将整个表写入平面文件(文本文件)?到目前为止,我尝试了以下内容:

Statement statement = connection.createStatement();
   ResultSet result = statement.executeQuery("SELECT * FROM tablename");
   BufferedInputStream buffer;
   FileOutputStream out = new FileOutputStream("flatfile.txt");
   while(result.next() )
   {
      buffer =  new BufferedInputStream(result.getBinaryStream("????") );
      byte[] buf = new byte[4 * 1024]; //4K buffer
      int len;
      while( (len = buffer.read(buf, 0, buf.length) ) != -1 )
      {
          out.write(buf, 0, len );
      }
   }
   out.close();
Run Code Online (Sandbox Code Playgroud)

"????" 只是我的占位符.我被困在作为论点传递的内容上.

java sql db2 jdbc resultset

22
推荐指数
3
解决办法
5万
查看次数

将静态值添加到SQL查询的结果中

我想知道是否有办法用SQL查询来实现这一点.

我有一张桌子,我们称之为"LISTOFTHINGS",它有两个感兴趣的领域"ID"和"NAMEOFTHING"

我想要做的是构造一个查询,以便返回的内容是此查询的结果:

SELECT ID, NAMEOFTHING FROM LISTOFTHINGS ORDER BY NAMEOFTHING
Run Code Online (Sandbox Code Playgroud)

并在上面的查询的第一行之前添加一行,其中"-1,'ALL THINGs'"作为值.

因此,如果该表具有以下三个条目:

1, 'THING 1'
3, 'THING 3'
2, 'THING 2'
Run Code Online (Sandbox Code Playgroud)

然后我想要的结果看起来像这样:

-1, 'ALL THINGS'
1, 'THING 1'
2, 'THING 2'
3, 'THING 3'
Run Code Online (Sandbox Code Playgroud)

我知道我可以执行查询并使用代码创建列表,但在我正在使用它的VB6程序中,我有一个第三方应用程序(我没有代码),它接受查询填充具有结果的ACTIVEX表控件.我没有钩子进入添加静态值.

我也知道我可以在表格中记录"-1,'所有事情'",但问题是,如果我这样做,我将需要更改程序中的很多地方以忽略该记录时做处理.

'ALL THINGS'值是一种伪记录,用于处理程序某一部分的特殊情况.

sql db2

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

如何使用给定的JNDI名称连接到Websphere数据源?

我正在使用Websphere Portal 7.0并使用RAD 8.0创建一个portlet.我的portlet正在尝试与远程服务器建立db2连接.我在本地编写了一个java程序来与服务器建立基本的JDBC连接,并从表中获取记录.代码工作正常; 但是,当我将代码添加到我的portlet以及db2jcc4.jar时,连接不起作用.我正在使用基本的:

Connection connection = DriverManager.getConnection("jdbc:db2://server:port/db:user=user;password=pw;");
Run Code Online (Sandbox Code Playgroud)

我认为使用Websphere数据源是正确的方法.我知道数据源的JNDI名称,但我没有找到关于如何建立连接的明确示例.有几个例子使用了一个DataSource类(我输入了这个类,这看起来好像它来自一个原生的java包,所以我在这里使用什么导入?)加上一个Context.我遇到过如下代码:

Context ctx = new InitialContext();
ctx.lookup("jdbc/xxxx");
Run Code Online (Sandbox Code Playgroud)

...有人可以为我打破这个吗?

编辑1

我根据列出的答案更新了我的代码.我真的觉得我越来越近了.这是我的getConnection()方法:

private Connection getConnection() throws SQLException {
    javax.naming.InitialContext ctx = null;
    javax.sql.DataSource ds = null;
    System.out.println("Attempting connection..." + DateUtil.now() );
    try {
        ctx = new javax.naming.InitialContext();
        ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/db");
        connection = ds.getConnection();
    } catch (NamingException e) {
        System.out.println("peformanceappraisalstatus: COULDN'T CREATE CONNECTION!");
        e.printStackTrace();
    }       
    System.out.println("connection: " + connection.getClass().getName() + " at " + DateUtil.now());
    return connection;
}
Run Code Online (Sandbox Code Playgroud)

我的整个web.xml文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app …
Run Code Online (Sandbox Code Playgroud)

java db2 websphere jndi ibm-rational

21
推荐指数
1
解决办法
11万
查看次数

SqlException:DB2 SQL错误:SQLCODE:-302,SQLSTATE:22001,SQLERRMC:null

sqlcode -302是什么意思?我在哪里获得sqlcode定义?

请指教

谢谢,

db2

21
推荐指数
3
解决办法
26万
查看次数