インフォミックス:dbaccess を使用してテーブルの内容と列名を取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2833288

  •  26-09-2019
  •  | 
  •  

質問

私が持っていると仮定します:

  • 「my_database」という名前の Informix データベース
  • 「my_table」という名前のテーブルに「col_1」、「col_2」、「col_3」という列があります。

を作成することでテーブルの内容を抽出できます。 my_table.sql 次のようなスクリプト:

unload to "my_table.txt"
select * from my_table;

コマンドラインから dbaccess を呼び出します。

dbaccess my_database my_table.sql

これにより、 my_table.txt 次のような内容のファイル:

value_a1|value_a2|value_a3
value_b1|value_b2|value_b3

さて、列名を取得したい場合はどうすればよいでしょうか。 my_table.txt?のように:

col_1|col_2|col_3
value_a1|value_a2|value_a3
value_b1|value_b2|value_b3
役に立ちましたか?

解決

あなたが望むように、標準のInformixツールのいずれもが、出力の先頭に列名を入れていない。

プログラムSQLCMD(ないマイクロソフトの新人 - 元1、 IIUGソフトウェアアーカイブから入手する )ことを行う能力を持っています。 (列の型を取得すると-H-Tの列見出しのためのオプションを使用します。

sqlcmd -U -d my_database -t my_table -HT -o my_table.txt
sqlunload -d my_database -t my_table -HT -o my_table.txt
ます。

それは何が必要( - - バグが正しく列名または列のタイプのラインをフォーマットしませんが)だ場合は、

SQLCMDも、CSV出力を行うことができます

他のヒント

あなたはdbschemaユーティリティを使用していないのはなぜ?

(すべてのデータベースを表示-tパラメータなし)1つのテーブルのスキーマを取得するには、

dbschema -d [DBName] -t [DBTable] > file.sql

1つのストアドプロシージャのスキーマを取得するには、

dbschema -d [DBName] -f [SPName] > file.sql

は簡単に解決策を見つけました。ヘッダファイルを結合するために、その後(それは単一ライン「header.txt」が含まれます)一つのファイルと言うのcol_1|col_2|col_3にヘッダを置き、あなたの出力ファイルを実行します。

cat header.txt my_table.txt > my_table_wth_head.txt
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top