3

SQLを扱うのはこれが初めてです。Windows 7 64bit で PostgreSQL を使用しています。

次のように作成されたツイートの (大きな) .txt ファイルがあります。

T   2009-06-07 02:07:41
U   http://twitter.com/cyberplumber
W   SPC Severe Thunderstorm Watch 339: WW 339 SEVERE TSTM KS NE 070200Z - 070800Z URGENT - IMMEDIATE BROADCAST REQUE.. http://tinyurl.com/5th9sw

ご覧のとおり、3 つの「列」はすべて T \t、従来のコンマ ( ,) の代わりに (U と W も同様) の方法で区切られています。dateuserおよびという名前の列を持つ SQL テーブルにファイル全体をインポートしたいと思いますtext_msg

おそらく何らかの方法で解析する必要があると思います。最も簡単で最も効率的な方法でデータをテーブルに入れる方法はありますか? また、問題の .txt ファイルはかなり大きい (>4GB) ため、手動で編集する簡単な方法がないことも考慮してください。

4

2 に答える 2

2

クイック&ダーティハック:

DROP SCHEMA tmp CASCADE;
CREATE SCHEMA tmp ;
SET search_path=tmp;

CREATE TABLE  lutser
        ( id SERIAL NOT NULL PRIMARY KEY
        , ztxt text
        );

CREATE TABLE  tweetdeck
        ( id SERIAL NOT NULL PRIMARY KEY
        , stamp timestamp NOT NULL
        , zurl text
        , ztxt text
        );

COPY lutser(ztxt)
FROM '/tmp/tweet.dat'
        ;

INSERT INTO tweetdeck (stamp, zurl, ztxt)
SELECT regexp_replace( t.ztxt, E'^[A-Z][ \t]*', '')::timestamp
        , regexp_replace( u.ztxt, E'^[A-Z][ \t]*', '')
        , regexp_replace( w.ztxt, E'^[A-Z][ \t]*', '')
FROM lutser t
JOIN lutser u ON u.id = t.id+1
JOIN lutser w ON w.id = t.id+2
WHERE t.id %3 = 1
AND LEFT(t.ztxt,1) = 'T' -- Should be redundant, Won't harm
AND LEFT(u.ztxt,1) = 'U'
AND LEFT(w.ztxt,1) = 'W'
        ;


SELECT * FROM lutser;
SELECT * FROM tweetdeck;

結果:

COPY 9
INSERT 0 3
 id |                                                                       ztxt                                                                       
----+--------------------------------------------------------------------------------------------------------------------------------------------------
  1 | T   2009-06-07 02:07:31
  2 | U   http://twitter.com/cyberplumber
  3 | W   SPC Severe Thunderstorm Watch 339: WW 339 SEVERE TSTM KS NE 070200Z - 070800Z URGENT - IMMEDIATE BROADCAST REQUE.. http://tinyurl.com/5th9sw
  4 | T   2009-06-07 02:07:41
  5 | U   http://twitter.com/cyberplumber
  6 | W   SPC Severe Thunderstorm Watch 339: WW 339 SEVERE TSTM KS NE 070200Z - 070800Z URGENT - IMMEDIATE BROADCAST REQUE.. http://tinyurl.com/5th9sw
  7 | T   2009-06-07 02:07:51
  8 | U   http://twitter.com/cyberplumber
  9 | W   SPC Severe Thunderstorm Watch 339: WW 339 SEVERE TSTM KS NE 070200Z - 070800Z URGENT - IMMEDIATE BROADCAST REQUE.. http://tinyurl.com/5th9sw
(9 rows)


 id |        stamp        |              zurl               |                                                                     ztxt                                                                     
----+---------------------+---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------
  1 | 2009-06-07 02:07:31 | http://twitter.com/cyberplumber | SPC Severe Thunderstorm Watch 339: WW 339 SEVERE TSTM KS NE 070200Z - 070800Z URGENT - IMMEDIATE BROADCAST REQUE.. http://tinyurl.com/5th9sw
  2 | 2009-06-07 02:07:41 | http://twitter.com/cyberplumber | SPC Severe Thunderstorm Watch 339: WW 339 SEVERE TSTM KS NE 070200Z - 070800Z URGENT - IMMEDIATE BROADCAST REQUE.. http://tinyurl.com/5th9sw
  3 | 2009-06-07 02:07:51 | http://twitter.com/cyberplumber | SPC Severe Thunderstorm Watch 339: WW 339 SEVERE TSTM KS NE 070200Z - 070800Z URGENT - IMMEDIATE BROADCAST REQUE.. http://tinyurl.com/5th9sw
(3 rows)
于 2013-04-29T14:22:19.713 に答える