有没有什么办法可以将select语句的结果导出到CSV文件,就像在MySQL中一样.
MySQL命令;
SELECT col1,col2,coln into OUTFILE 'result.csv'
FIELDS TERMINATED BY ',' FROM testtable t;
Run Code Online (Sandbox Code Playgroud) 我如何使用DB2的Explain函数? - 既可以运行它,也可以用它来优化查询.有没有更好的DB2工具?
我之前已经建立了查询,但是我必须告诉他们需要多长时间的唯一方法就是运行它们并计算时间 - 这几乎不是理想的.
编辑:我的答案结果是"你做不到.你没有,也无法获得访问权限." 你不喜欢官僚主义吗?
这很令人尴尬,但我似乎无法找到一种方法来列出DB2数据库中表的名称.这是我尝试过的:
root@VO11555:~# su - db2inst1
root@VO11555:~# . ~db2inst1/sqllib/db2profile
root@VO11555:~# LIST ACTIVE DATABASESRun 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".
我正在寻找一个简单的DB2查询,可用于测试池中的数据库连接是否仍然有效.它需要是一个通用查询,无论存在哪个数据库都会执行.
对于其他数据库服务器,我使用了'SELECT 1'或'SELECT version();'
什么是DB2的等价物?
谢谢!
自从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) 当我将数据插入表(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语句试图将列添加到具有使用行属性敏感性定义的编辑过程的表中.没有列可以添加到此表.
有没有办法纠正它?
一旦我放下并重新创建表格,我可以再次插入.
提前致谢.
如何使用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)
"????" 只是我的占位符.我被困在作为论点传递的内容上.
我想知道是否有办法用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'值是一种伪记录,用于处理程序某一部分的特殊情况.
我正在使用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) sqlcode -302是什么意思?我在哪里获得sqlcode定义?
请指教
谢谢,