JRubyインタープリターを使用して実行するrubyスクリプトがあります。スクリプトは、DBIおよびSybase JDBC(jTDS3.jarおよびjconn3.jar)を使用してSybaseデータベースに接続します。
私の問題は、テーブルの列名を変更するselectクエリがあることです。例えば:
SELECT
t.TRANSACTION as 'business_transaction',
t.TRADE_CURRENCY as 'currency',
t.CURRENCY as 'settlement_currency'
...etc...
FROM
TRADE t
...etc...
私の問題は、ドキュメントから直接例を使用する場合です
sth = dbh.execute(stmt)
printf "Number of rows: %d\n", rows.size
printf "Number of columns: %d\n", sth.column_names.size
sth.column_info.each_with_index do |info, i|
printf "--- Column %d (%s) ---\n", i, info["name"]
end
または単に
sth = dbh.execute(stmt)
rows = sth.fetch_all
col_names = sth.column_names
sth.finish
DBI::Utils::TableFormatter.ascii(col_names, rows)
クエリで「as」句を使用して設定したため、すべての名前が表示されるわけではありません。いくつかは元のフィールド名であり、いくつかは私が指定した名前です。
たとえば、次のように一覧表示されます。
--- Column 0 (TRANSACTION) ---
--- Column 1 (TRADE_CURRENCY) ---
--- Column 2 (settlement_currency) ---
また
TRANSACTION
TRADE_CURRENCY
settlement_currency
これをSquirrelSQLClientでテストすると、列の名前が正しくなります。これはDBIまたはSybase JDBCドライバーのバグですか?または私は何か間違ったことをしていますか?
どんな助けでも大歓迎です