
実は、かなり悩んでいるため、助けて(教えて)いただけないでしょうか?
なお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で数字の値のもののみを取...
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
SELECT INTOで一度に複数の変数...
-
PostgreSQLのtimestamp型で時間...
-
フォームから入力してテーブル...
-
SQLサーバに対するSQL文で抽出...
-
既にテーブルが存在する場合の...
-
エラーを起こす方法
-
pandasでsqlite3にテーブル作成...
-
SQLで、Join句で結合したテ...
-
結合したテーブルをSUMしたい
-
truncate tableを使って複数の...
-
selectの単純繰り返し
-
AccessとSQL Serverの連携について
-
OracleとSQL ServerのSQL文上で...
-
既存データをINSERT文にして出...
-
必要なテーブルの個数について。
-
ACCESS クエリーでソートの不具合
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
集計でテストの各教科の最高得...
-
MySQLで数字の値のもののみを取...
-
固定長のデータをmysqlで取り込...
-
文字列を追加してUPDATEしたい
-
エラーをいくらチェックしてもD...
-
ストアドプロシージャの実行方法
-
次の時間帯の勝率の合計を求め...
-
Using temporary; Using fileso...
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
truncate tableを使って複数の...
-
PostgreSQLのtimestamp型で時間...
-
オラクルのUPDATEで複数テーブル
-
SQLをExcelで書いている人を良...
-
SQLで、Join句で結合したテ...
-
Accessの構成をコピーしたい
-
既存データをINSERT文にして出...
おすすめ情報