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

PUBMEDのmedline形式ファイルをAccessに取り込む方法について

medlineのファイルは
http://homepage3.nifty.com/Noah/pubmed01.htm
のような特徴がありますが、これを簡単にMS Accessに取り込みたいのです。

過去には文献管理ソフトを使っていましたが、USBメモリでの持ち運びやすさや、カスタマイズのしやすさ等からアクセスに変えました。
現在は、pubmed→result.txt→アイPUB→result.cvt→拡張子を書き換え→result.txt→アクセスと、明らかに無駄なステップを踏んでおります。

これをスパッとインポートできる方法についてご存知の方、教えていただけませんか。




●質問者: bear32
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:access CVT MS PubMed txt
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● wm5775
●50ポイント

#質問の趣旨をはずしていたらすみません。

もし、適当にプログラミングができるのであれば、pubmedのeutlsという機能を使うと、結果がxml形式で取り出せます(というか、らしいでです)。

#プログラミングといっても大したことはありません。URLを叩いたり、Perlなどが使えれば、ある程度の作業が自動化ができるといった感じです。

Entrez Programming Utilities

http://eutils.ncbi.nlm.nih.gov/entrez/query/static/eutils_help.h...

bear32さんのおっしゃるpubmed形式は著者数やキーワード数が任意になる形になっていると思うので、取り込みたいパターンが含まれる複数文献を一つにまとめたxmlファイルを用意して、アクセスにインポートすることで、自動的に正規化してくれるんじゃないでしょうか?

#やっていないので本当にできるかどうかわかりませんが、私はリンクリゾルバーをこんな感じでそのうち構築しようと考えていました。

たとえば、"navx"というキーワードで検索するperlプログラムはこんな感じです。


use LWP::Simple;

$esearch = "http://www.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed...";

$esearch_result = get($esearch);

$esearch_result =~

m|<Count>(\d+)</Count>.*<QueryKey>(\d+)</QueryKey>.*<WebEnv>(\S+)</WebEnv>|s;

my $Count = $1;

my $QueryKey = $2;

my $WebEnv = $3;

#print "count = $Count;\nQueryKey = $QueryKey;\nWebEnv = $WebEnv";

$elink = "http://www.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&...$QueryKey&WebEnv=$WebEnv";

$elink_result = get($elink);

print $elink_result;

あと、一文献ごとにpubmedデータファイルを持っているのだとしたら、富士ゼロックスの情報箱というソフトが非常に便利だったんですけど、発売をやめちゃったらしいです。

#これ、かなりイケてるソフトだったんですけどね。

◎質問者からの返答

ご回答ありがとうございました。

リンク先を見ておりお礼が遅れました。

XMLでの扱いについてもう少し調べてみます。


2 ●
●50ポイント

以下の条件によって対応方法は変わってくると思います。

MS Access 2002の場合、PubMedのXMLをそのままインポートしても大量のテーブルに分割されてしまいます。

2003の場合、ImportXMLのDataTransformパラメータを使ったり、TransformXMLメソッドを使うことで、あらかじめ用意したxslファイルを使ってXMLを取り込みやすい形式に変換した上で、インポートすることができます。

いずれにせよ、VBAでのプログラミングなどが必要になります。

私もEXCELを使って同様のことを行おうとしたことがあり、その時は以下の2つの方法を試しました。

  1. EXCEL VBAからMSXMLの機能を利用し、XSLTで変換してからインポートする
  2. EXCEL VBAからMSXMLの機能を利用し、XMLを読み込んだDOMDocumentからXPathで必要な情報を取り出し、整形した上でEXCELにデータを挿入

XSLTに慣れていないとXMLの2次元化(フラットにして1つのテーブルにおさまるように変換すること)は結構難しいです。

2番目の方法の方がしっくり来たため、そちらを使いました。

また、VBAではなく使い慣れたスクリプト言語がある場合、そちら側でデータを取得した後、Accessを操作してデータを挿入する方法もあります。(id:wm5775さんも説明していますね。)

ただ、スクリプト言語を使うのであれば、それぞれ適したライブラリがあるので、それを使った方が楽ですよ。

  1. BioPerl
  2. BioPython (解説)
  3. BioRuby

それぞれ、PubMEDの情報を簡単に扱う方法を提供しています。例えば、Pythonであれば以下のページが参考になります。

どれもあまり簡単な方法ではありませんが、少しでも参考になれば幸いです。

◎質問者からの返答

ご回答ありがとうございます。

accessのバージョンは2000です・・・。

やはりXMLでの取り扱いがポイントなのです。

お恥ずかしながら,VBAが精一杯の私にはかなりの困難な作業になりますね。

ですが,いいきっかけですので,頂きました資料を元に,勉強を始めてみることにします。

関連質問


●質問をもっと探す●



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