2012-01-21 17 views
0

私はバイナリタイプのカラムを持つテーブルを持っています。mysql&select into OUTFILE - バイナリデータをファイルに書き込む

---------------+---------+----------+-------------+ 
| appid | imei    | request_timestamp | city_id | state_id | country_id | 
+-------+------------------+-------------------+---------+----------+------------+-----------+ 
| 45861 | 101111000110  |  1327119595 |  700 |  43 |   5  | 
| 93502 | 1000011001010 |  1327119595 |  305 |  490 |   9 |  | 
+-------+------------------+-------------------+---------+----------+------------+------- 

SELECT * INTO OUTFILE 'test.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED 
BY '\n' FROM log_track_tbl_382 ,the csv file has data in the form 

45861,"101111000110\0\0\0\0",1327119595,700,43,5 
93502,"1000011001010\0\0\0",1327119595,305,490,9 

バイナリ列は、適切な形式でtxtファイルに書き込まれません。 ファイル内のバイナリデータを保存するための適切なmysqlコマンドを提案することができます。 mysqlプロンプトからこのコマンドを実行すると、

+5

このフォーマットの残虐行為を修正してください。画面に収まるには大きすぎる場合は、含まれている可能性があります。問題を例示する最小限のケースにあなたの例を単純化してください。 (独自のデバッグにも役立つかもしれません!) –

+1

"適切なフォーマット"が何を意味するかを定義してください。あなたは何を得て、何を期待していますか? – deceze

+0

バイナリの現在のデータmysqlはテキストファイルでは同じではありません。テーブルにあるカラムの値は101111000110で、テキストファイルでは101111000110 \ 0 \ 0 \ 0 \ 0です。 –

答えて

3

OUTFILEの代わりにDUMPFILEを使用してみてください。

このオプションをOUTFILE以上に選択すると、クエリ結果は1行で記述され、列または行終端は省略されます。これは、グラフィックファイルやWordファイルなどのバイナリデータをエクスポートするときに便利です。バイナリファイルをエクスポートするときはOUTFILEを選択できない、またはファイルが破損することに注意してください。

クエリは、単一の行をターゲットにする必要があります。 2つのバイナリファイルからの出力を結合することは意味をなさないので、試みるとエラーが返されます。

関連する問題