2

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

  • 「my_database」という名前のInformixデータベース
  • 列「col_1」、「col_2」、および「col_3」を持つ「my_table」という名前のテーブル:

次のような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
4

3 に答える 3

2

なぜdbschemaを使用しないのですか?

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

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

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

dbschema -d [DBName] -f [SPName] > file.sql
于 2017-07-26T04:50:59.373 に答える
1

標準のInformixツールはどれも、必要に応じて出力の先頭に列名を配置しません。

プログラムSQLCMD(Microsoftの新参者ではなく、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出力も実行できます(ただし、バグ—列名または列タイプの行が正しくフォーマットされません)。

于 2010-05-14T18:25:38.063 に答える
0

より簡単な解決策を見つけました。ヘッダーを1つのファイルに配置しheader.txt(1行の " col_1|col_2|col_3"が含まれます)、ヘッダーファイルと出力ファイルを結合します。

cat header.txt my_table.txt > my_table_wth_head.txt
于 2013-06-12T10:16:26.287 に答える