こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

sqlite3から取り出したデータにカラム名を付与

Perl CGIを介してsqlite3でデータベースを構築しています。
とりだしたデータを.csvにしてユーザがダウンロードできるようにしたいです。
単にselect * としてcsvを作っても、カラム名のないファイルができます。
一行目がカラム名になっているファイルを作るにはどうすればよいでしょうか?
列数が4つか5つ程度なら、Perlにそれらを固定で書き込んでやればよいのですが、
列数が多くなると(データ構造を変更した際などに)不一致がおきる危険性があります。データベースから直接定義をとりだして、それを利用できればと思うのですが。

投稿日時 - 2019-01-15 12:29:15

QNo.9577999

困ってます

質問者が選んだベストアンサー

表を生成する前にカラム名を取得し、タイトル行を生成する
 $ DESCRIBE テーブル名;
  または
 $ show columns from テーブル名;

全てのデータが文字列であるならば1行目には必ずカラム名を入れてしまうというのもありなのかも。

投稿日時 - 2019-01-15 12:51:22

補足

ご回答ありがとうございます。

私がつかっているのは sqlite3で、windows+apache24あるいはwindows+IISという環境下です。cgiはperlで書いています。

さて、sqlite3をコマンドプロンプトで起動して.helpしてみるとDESCRIBEというのがなくて、.schema というのがあります。

コマンドラインで .schema テーブル名
と入れてやると、列名が表示されます。ただし、perl cgiから
my $sth = $dbh->prepare(".schema $case_table");
if (defined($sth)){
と記述すると、prepareできていないのが分かります。
my $sth = $dbh->prepare(".schema $case_table;");
として、; をいれてやっても同じです。

.show というコマンドはありますが、引値はとらないようです。

カラム名を配列要素として取得したいのですが、なかなか難しそうです。引き続きご指導のほど、宜しくお願いいたします。

投稿日時 - 2019-01-15 15:49:04

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-