実は、かなり悩んでいるため、助けて(教えて)いただけないでしょうか?
なおMysqlのバージョンは5.5.31です。
・hoge_test.txtの中身
011010000000009 043.052927141.3446931
011000000000009 043.059576141.3581841
011010010000009 043.036466141.3242842
011010010010009 043.038999141.3229683
0110100A0020009 043.037663141.3252133
0110100E0030009 043.037048141.3238143
※真ん中の の部分は2バイトの空白5文字。。。
先頭の11桁分は、数字+A~Z、
test6とtest7にあたる部分には、43.059576や141.358184などといった
小数点(少数6桁)のデータがあります。
といったhoge_test.txtの固定長のデータ(改行コードCR/LF)があるとき、
CREATE TABLE `hoge_test`.`hogehoge` (
`test1` varchar(11) DEFAULT NULL,
`test2` varchar(3) DEFAULT NULL,
`test3` varchar(1) DEFAULT NULL,
`test4` varchar(5) DEFAULT NULL,
`test5` varchar(1) DEFAULT NULL,
`test6` varchar(9) DEFAULT NULL,
`test7` varchar(10) DEFAULT NULL,
`test8` varchar(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
上記のように定義して、以下のような形で取り込んでみました。
※小数点部分はDOUBLEを使うのもありですが・・・うまくいかなかったので文字列として取り込むことに
set character_set_database=sjis;
LOAD DATA LOCAL INFILE "hoge_test.txt"
INTO TABLE hoge_test.hogehoge
FIELDS
TERMINATED BY ''
OPTIONALLY ENCLOSED BY ''
LINES
TERMINATED BY '\r\n'
;
上記を実行すると、こんな感じのような形となります。
'01101000000', '271', '6', '1', '', '', '', ''
これを以下のようにしたいのですが、
そももそLOAD DATA で、このような固定長データを読み込むは難しいのでしょうか?
オラクルでいうところのPOSITION句で各項目のレコード上の位置を指定はできないのでしょうか?
http://oracle.se-free.com/utl/C2_kotei_load.html
それとも単純に私の定義や取り込む方法がマズイのでしょうか?(だから取り込めないんだと思っていますが。)
最終的に、どうしたいかというと、以下のような形で、各カラムにデータが入ればOKです。
'01101000000','000','9',' ','0','43.052927','141.344693','1'
そのままLOAD DATAで取り込みたいですが、この際元データをsedなどのlinux系標準のコマンドで
カンマ区切りやタブ区切りに変換して、LOAD DATAで読み込んでも構わないです。
(ただエクセルで操作してというのは無しでお願いします。)
※データ量としては、200M単位です。
hoge_test.txtを sedで○○○○○で置き換えて、定義とLOAD DATAで、○○○○○で
こういう風に○○○○○書けば取り込めばできるよ
みたいな形でコードを教えていただけると助かります。
お手数をおかけいたしますが、よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ちなみにこんな感じ
create table hogehoge (
test1 char(11) DEFAULT NULL,
test2 char(3) DEFAULT NULL,
test3 int DEFAULT NULL,
test4 char(5) DEFAULT NULL,
test5 int DEFAULT NULL,
test6 double DEFAULT NULL,
test7 double DEFAULT NULL,
test8 int DEFAULT NULL
);
create temporary table tmp (data char(41));
insert into tmp values
('011010000000009 043.052927141.3446931')
,('011000000000009 043.059576141.3581841')
,('011010010000009 043.036466141.3242842')
,('011010010010009 043.038999141.3229683')
,('0110100A0020009 043.037663141.3252133')
,('0110100E0030009 043.037048141.3238143');
//ここをload処理にする?
insert into hogehoge
select
mid(data,1,11)
,mid(data,12,3)
,mid(data,15,1)
,mid(data,16,5)
,mid(data,21,1)
,mid(data,22,9)
,mid(data,31,10)
,mid(data,41,1)
from tmp;
//表示
select * from hogehoge;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
集計でテストの各教科の最高得...
-
MySQLで数字の値のもののみを取...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
Accessで今日から5日後
-
truncate tableを使って複数の...
-
フラグをたてるってどういうこ...
-
テーブル名が可変の場合のクエ...
-
結合したテーブルをSUMしたい
-
オラクルのUPDATEで複数テーブル
-
ACCESSのVBAにてExcelに行...
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
PostgreSQLのtimestamp型で時間...
-
SQLで、Join句で結合したテ...
-
全テーブルの列数を調査したい
-
データ無し時は空白行にしたい...
-
ADO+ODBCでテーブルに接続する...
-
既存データをINSERT文にして出...
-
ExcelのVLOOKUP関数の動作をMyS...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
集計でテストの各教科の最高得...
-
MySQLで数字の値のもののみを取...
-
文字列を追加してUPDATEしたい
-
次の時間帯の勝率の合計を求め...
-
固定長のデータをmysqlで取り込...
-
エラーをいくらチェックしてもD...
-
Using temporary; Using fileso...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
テーブル名が可変の場合のクエ...
-
エラーを起こす方法
-
オラクルのUPDATEで複数テーブル
-
truncate tableを使って複数の...
-
結合したテーブルをSUMしたい
-
Accessで今日から5日後
-
既存データをINSERT文にして出...
-
timestampのデータはどのように...
おすすめ情報