人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQLについて質問です。

クエリによって生成されたテーブルをCSVの添付形式で出力するSQLプログラム命令を書けるかたおりましたら書いください。お願いします。

現在MyAdminを使用しクエリによって生成されたテーブルを出力しているのですが以下の条件で出力しています。

<< MyAdmin 出力条件>>

●フィールド区切り記号: ,(カンマ)
●フィールド囲み記号: ""(ダブルクォーテーション)
●フィールドのエスケープ記号: \(円マーク)
●行の終端記号: AUTO
●NULL の代替文字列: NULL

● ファイルに保存する にチェックを入れる
● ファイル名のテンプレート _TABLE_ (テンプレートを記憶させるにチェック)
● 圧縮は なし を選択

● SJIS エンコーディングへ変換する を選択
● 全角カナへ変換する にチェックを入れる

MyAdmin では以下の様な注意書きが書いてあります。

このテンプレートは strftime を使って解釈されます。そのため、時間の書式文字列を利用できます。また、次の変換も行われます。__SERVER__/サーバ名, __DB__/データベース名, __TABLE__/テーブル名 それ以外のテキストは修正されません

お時間ありましたらよろしくお願いします。

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:CSV SJIS SQL エスケープ エンコーディング
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●60ポイント

ご利用のRDBMSはMySQLですよね。

であれば、SQL文は下記のようになります。

select * from [テーブル名] into outfile "[出力CSVファイル名]" fields terminated by ',' optionally enclosed by '"';

これだと生のままのエンコードで出力されるので、制御プログラム側でShift_JISにエンコード+エスケープする必要があります。

制御プログラムはPHPをご利用ですか? であれば、mb_convert_encoding関数とaddslashes関数を使ってエンコード+エスケープできます。


参考サイト

◎質問者からの返答

ご回答ありがとうございます。試してみます。

制御はPHP,RDBMSはMySQLになります。


2 ● xxyouxx
●100ポイント ベストアンサー

SELECT *

FROM PRODUCT_KANRI

INTO OUTFILE "product_kanri.xls"

FIELDS TERMINATED BY ','

OPTIONALLY ENCLOSED BY '"'


ですよ。[]は不要です。

ちなみに、csv形式で書き出されますので、outfileは.csvか.txtの方が良いのではないでしょうか。

Excel形式(xls)に変換したいのでしたら、PEARでSpreadsheet_Excel_Writerというパッケージがありますので、チャレンジしてみてください。

◎質問者からの返答

ありがとうございます。実行してみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ