- ベストアンサー
accessでcsvファイルをインポートする時…
access 2003で質問です。 次のようなcsvファイルをインポートしたいと思っています。 (左から順に 個人番号,氏名,血液型,出身 となっているが、空欄になっているところもある) 001,A山太郎,A型,千葉県 002,B田次郎,北海道 C川三郎,O型,東京都 何も考えずにインポートすると、個人番号のフィールドに氏名が入ったり氏名のフィールドに血液型が入るフィールドが出てきます。 これを、個人番号がなければそこは空欄にするよう自動判別する方法はありますでしょうか? もしもありましたら、初歩からご教授願います。 (始めたばかりですので…)
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 そのCSVファイルはどのように作成しているのでしょうか? 通常、空欄になっている場合は「,」だけが残るはずです。 001,A山太郎,A型,千葉県 002,B田次郎,,北海道 ,C川三郎,O型,東京都 というか、「,」がなければ列の判定がぐちゃぐちゃになるのは当然です。 このようなデータは、まともなCSVファイルとは言えません。 まともでないデータなので、Access側でインポート時にこれを判別させるのは、大変な労力になるでしょう。 (かなりのVBAプログラムを書く必要がありそう。) データ量にもよりますが、Excelなどで列位置を全部直して保存するのがいいと思います。 そうすれば、Accessにインポート出来ると思います。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
不思議な質問です。 >そのCSVファイルはどのように作成しているのでしょうか (maruru01さん)の答えは? >すでにこのファイルになってしまっています。 なっていても、プログラムミスなら訂正して、もう一度書き出せば良いのでは。 >書き出すときにこのような方式にできないのでしょうか (quothさん)の答えは?。 >アクセスでVBAを使って書換える方法はありますが (laputartさん) pen-penさんは、一般的な文章を用いてでも、「個人番号がなければそこは空欄にするよう自動判別する方法」を表現できますか?。できてもプログラム出きるとは限らないが、出来ないのでは?。文章に表現できないものはプログラムを組めません。質問に掲げた例も実情を隠した例えになっていませんか。 もし実情であれば、例えば(1)最初に3桁数字がなければ番号なし(2)2番目に漢字があれば氏名あり(3)血液型アルファベット文字がなければ、血液型なし、次に漢字で府県名が来ると住所とする、と考えたとしても、すぐ反論されるケースが予想されるし、危ういロジックであり、また上記でも結構プログラムは難しく、質問の状況からして、質問者がプログラムを作るのは無理でしょう。 むしろ、ファイルを作った人に頼めは、解決の余地が有るはずです。空白が空いているとか。
お礼
すみません、うまく質問ができていませんでした。 >そのCSVファイルはどのように作成しているのでしょうか webからダウンロードしたものです。CGIなどで作っているようですが、周囲に作者がいないのでどのように作成しているのか聞けませんでした。 >書き出すときにこのような方式にできないのでしょうか 上記の通り近くに作者がおらず、私ではできません。 やはり、今の私ではAccessを使って作業するのは難しいので、今回はあきらめます。
- laputart
- ベストアンサー率34% (288/843)
1万件以上あるのなら大変ですね。 アクセスでVBAを使って書換える方法はありますが 必要なら作ってみますが....
お礼
お心遣いありがとうございます。 perlを使って整形してからインポートする方法も考えました。 accessだけでできれば便利だと思ったのですが、困難であればあきらめます。
- quoth
- ベストアンサー率31% (158/506)
通常CSV形式で書き出した場合、空欄になっているフィールド(欄)は、カンマだけになるはずです。 例でいえば 001,A山太郎,A型,千葉県 002,B田次郎,,北海道 ,C川三郎,O型,東京都 といった具合です。(2つ目、3つ目にカンマが加わっています。) 書き出すときにこのような方式にできないのでしょうか? これができれば簡単にインポートできます。 すでにこのファイルとなってしまっているのであれば、自分でテキストエディターなのでカンマを追加し、インポートする方が(量によりけりですが)手っ取り早いと尾も増す。
お礼
すでにこのファイルになってしまっています。 テキストエディターによる加工も考えたのですが、量が非常に多いため(1万件以上…)accessでうまいことできればと思ったのですが…。
お礼
やはりaccessでは難しいですか。 実際は10項目1万件以上のデータなので、accessでなんとかできればと思ったのですが…。