【ACCESS】CSVデータをインポートしてテーブルを作成する方法

このQ&Aのポイント
  • CSVデータから商品コードの文字列を抜き出す方法を教えてください
  • ACCESSにインポートしたCSVデータを加工する際に、数字だけを抜き取る方法を教えてください
  • インポートしたCSVデータをACCESSでテーブルに変換する方法を教えてください
回答を見る
  • ベストアンサー

【ACCESS】文字列を抜き出したい

初心者ですが。分かる方お願いいたします(__)(至急ですみません) 会社の専用システムからCSVデータをダウンロードしました。 その時点で、「商品コード」のフィールドが「"=0123456"」 のようなってしまっています。(「0123456」のように数字だけになっていてほしい) CSVの段階で、文字列関数を使用して数字だけにしてしまえばいいのですが、何万件とデータが重く、ファイルも複数あることから時間がかかってしまいます。 そこで、ACCESSにデータをインポートして加工しようとしましたが、どのようにすれば数字だけ抜き取ることができるでしょうか。 Right関数、left関数も考えましたが、商品コードの文字数が一定していないためできません。 インポートした時点で商品コードのフィールドがテキスト型にされていたので、数値型にすれば数字だけになるかな?と思ってやってみましたがデータがすべて失われてしまいました・・。 良い知恵をお貸しください。 どうぞよろしくお願いいたします。 それをACCESSにインポートしてテーブルを作成致しました。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

文字型のフィールドで、桁は不定、は確定として。 インポートの際に囲みの文字列指定ができるのでダブルクォートを指定すれば除去できます。 =は、桁が不定でも、先頭に1文字のみ、ならば 参照クエリでも作成し、商品コード欄に 式: =Mid([商品コード], 2, (Len([商品コード])-1) ) で 2文字目から末尾まで取り出せます。

nekocya
質問者

お礼

ありがとうございます! すごく納得です!! 早速やってみます。ありがとうございました!!

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

アクセスの使い手なんでしょうが、=1文字を除去するのに、アクセスに読み込ませて、データ修正をやるのは、大げさ。 VBAでCSVファイルを読んで、Splitし、=を取り除けば済む。 シーケンシャルファイル(テキスト)の読みかた Split ファイルの書き出し などWEB照会でコードがわかると思う。 どの列が対象か(=のはいっていそうな列)墓いてないが一定しているのだろうか。 ーー テキストエディタで、CSVファイルを読み、=を空白で置換するのはどうだろうか。結果的に削除できないですか。 ーー エクセルでも2007なら読み込めるので、簡単に、シート上で関数で修正した列ができるでしょう。元の列に値だけ戻す。 ーーー >商品コードの文字数が一定していないためできません。 先頭に=があるのではないのですか?先頭にあるなら アクセスで例えば氏名フィールドでの例で式1: Right([氏名],Len([氏名])-1) で出来ませんか。

関連するQ&A

  • Access(アクセス)での文字列の置換について

    商品データベースをCSVでダウンロードし、一括で変更しようとしています。 Excelでは1つのセルに911文字以上のテキストが入っていると置換ができないようなんですが、アクセスではどうなのでしょう。 ちなみに、置換したいフィールドにはhtmlが入っていて、1000文字を超すフィールドもたくさんあります。 また、Excelはバージョンによって、ダブルクォーテーションを含むCSVデータ(htmlなど)は上手く1フィールドとして認識できないようです。アクセスもそのような不具合があるのかも教えていただきたいです。 よろしくお願いします。

  • Excel 文字列データ から Access へ インポート フィールドサイズを小さくしたい。

    こんにちは、 Excel2003の文字列データをAccess2003へインポートしたところ、インポートされたデータのフィールドサイズが255になります。 これをその後、手動で小さくするのですが、インポートの時点で意図したフィールドサイズにすることはできないでしょうか? 他、数字データは、倍精度浮動小数点型になるのですが、これも、整数データにしたいのですが、何か良い方法はないでしょうか? 何かお分かりの方がいましたら教えてください。よろしくお願いします。

  • アクセス2007とアクセス2010について

    アクセスでテキストデータを取り込む際についてご質問がございます。 アクセス2010については、現在取り扱っている文字コードUTF8の テキストデータ及びCSVに関してはすべて取り込めるのですが アクセス2007に関してだけ取り込めないデータがあります。 その場合のエラーメッセージですが テキストインポートウィザード ExecuteTempImexSpec'メソッドは失敗しました'_WizHook'オブジェクト と表示され OKボタンを押すと インポートするときにエラーが発生しました。ファイルはインポートされませんでした と表示されます。 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ そのデータをそのままアクセス2010で対応するとインポート出来ます。 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ 話を整理させて頂きます アクセス2010 現在取り扱っている文字コードUTF8の テキストデータ及びCSVに関してはすべて取り込めます アクセス2007 現在取り扱っている文字コードUTF8の テキストデータ及びCSVに関して 取り込めないデータもあります ※因みにアクセス2007に関してはネット環境がありませんので ソフトやPCはアップデートはされません。 この現象についてなにか心当たりある方はいらっしゃいますか? どうぞよろしくお願いいたします。

  • ACCESSでの改行コード

    ACCESSでの改行コードの入力方法を確認させてください。 ACCESSのテーブルにテキスト型のフィールドを用意し、一つのフィールドに改行が入ったデータを入力したいと考えています。 以下の方法を試してみましたが、改行コードが入っていないように思えます。 1.エクセルで一つのセルで、ALT+ENTERで文字列を入力し、テーブルにデータをインポート。 2.上記エクセルのデータをCSVで保存したものをテーブルにインポート。 これら2つのデータをテーブルで確認すると、改行はされていないですし、テーブルのデータをエクスポートしたものも改行はされていませんでした。 フィールドの設定で何か必要なんでしょうか? それとも、テキスト型のフィールドには改行コードを持てないんでしょうか?

  • Accessの文字列部分一致を合計する関数

    お世話になっております。 Access2003の関数で教えてください。 Acces2003のクエリで、 「同じフィールド内で文字列が部分一致した場合、新しいフィールドに 別のフィールドにある数値を合計する、部分一致しない場合は合計せず、 そのままの数値を表示する」 という関数を設定したいと思っております。 具体的に記載しますと、 在庫テーブルがあり、 商品コード 在庫  aaa      10 bbb      20 ccc      15 ddd      30 aaa-1    40 bbb-1    25 ddd-1    20 というデータが入力されております。 この在庫テーブルから新しいクエリで、新しく「在庫合計」フィールド を作成し、このフィールドに関数を用いて、 『「商品コード」フィールドの左3文字が一致した場合、「在庫」フィールドの 数値を合計する数値を表示させ、一致しない場合は合計せずそのままの 数値を表示する』 という形です。 クエリの実行結果としては 商品コード 在庫 在庫合計 aaa      10   50 bbb      20   50 ccc      15   15 ddd      30   50 bbb      5   50 aaa-1    40   50 bbb-1    25   50 ddd-1    20   50 という結果になり、商品コード「aaa」と「aaa-1」や「bbb」と「bbb-1」の「在庫合計」の値 は同じ値(「在庫」フィールドを合計した数値)が表示され、左3文字が一致したデータ がない「ccc」は15のまま、という結果です。 ※ただ、商品コードに重複がございます。(上記例でいうと商品コードが「bbb」です。) 当方VBAは使えないので、クエリで行いたいと思っております。 Accessで難しければExcelの関数でも構いません。 当方初心者ですので、不足な情報がございましたら加筆いたします。 どうぞよろしくお願いいたします。

  • Accessへのインポート時に数字が正しく設定されない

    Access2000で、あるCSVをインポートしたところ、数字の項目正しく入らない 事象が起きました。 (CSVでは"665554368"という数字が、Accessでは"665554340"になってしまいます。) 金額に該当する項目なので、正しく入らないと困るのですが、原因は何が 考えられ、どうすれば解決するでしょうか? 以下の方法を試しましたが、いずれもダメでした。 ・該当の値が入るフィールドのデータ型を以下のものにする。  →通貨型、単精度浮動小数点型、倍精度浮動小数点型  (いずれもダメです) ・CSVの区切り文字を別の文字に置換する。  →"|"だったものを、","区切りにしましたがだめでした。 ・CSVをExcel2003形式で保存し、Excelをインポートする。  →直接CSVをインポートしたときと同じ数字になりました。 お手数ですが、皆様の知恵を貸していただけないでしょうか。 よろしくお願いします。

  • access2010でメモ型がインポートできない

    以前のACCESS2000では出来ていたのですが、ACCESS2010(windows7)にバージョンアップしたところ、csvファイルのインポートで、メモ型のデータが255文字までしかインポートできなくなりました。 調べてみたところ、そのフィールドを、クエリなどで使用しているとキャスト(型変換)されるのでメモ型ではなくなり255文字の制限がかかる、との記述がありましたが、新しいテーブルを作成してインポートしてもできませんでしたので、別の原因かと思われます。 また、ACCESS2000のデータを、ACCESS2010の[ファイル]-[保存して発行]・・・・も行い、拡張子を.accdbにしてみましたが、やはり255文字を超えるインポートができませんでした。 インポート時の[設定]のところのフィールドの情報で、メモ型にしてあるフィールド名が表示されていないのが気になりますが。 文字列の引用符は ” にしています。 ACCESSはデータの25行目までを読み込んでデータ型を自動選択している、という記述もあり、1行目のデータに256以上の文字を入れてインポートもして見ましたが255文字で切られてしまいます。 よろしくお願いいたします。

  • Accessで文字列を連結しフィールドを作成するには?

    アクセスのクエリーでテーブルから2つの文字列フィールド引っ張ってきて、その文字列データをくっつけることがやりたいのですが、どのようにやったらよいのでしょうか? ちなみにExcelの場合はCONCATENATE関数で2つのセルを 1つのセルにまとめることが可能です。アクセスで関数を見てみたのですが、そのような関数はありませんでした。 誰かよい方法があれば教えていただけませんか? よろしくお願いします。

  • Accessのインポートについて

    マイクロソフトアクセス2010でテーブルを作り、そこにCSVファイルを読みこませたいです。 テーブルのフィールドはテキスト型です。 例えば、Table_TESTというテーブルにF1というテキスト型のフィールドを設けます。 Access標準のTEXTインポート機能を使い、インポートを行おうとします。 CSVファイルのデータは、「12345678912345678ABCD」といったように数値とアルファベットです。 なぜか、このようなデータをインポートする時にデータ変換エラーと表示されて、正しくインポートできません。 これは、なぜこのような現象が起こるのでしょうか?

  • アクセスで小数点以下1桁までをインポートしたい

    アクセスのインポートで小数点1桁までをインポートしたいです。 インポートするデータはCSVファイルです。 インポート定義をつける為に、エクセルのデータをCSVにし、CSVをアクセスにインポートしています。 エクセルの時点では、小数点下1桁まで表示されているのですが、CSVに加工した時に小数点以下1桁が0のものは整数表示になってしまいます。 (例)  エクセル → CSV   38.5  → 38.5   35.0  → 35 アクセスでインポートした後に、全部のレコードを小数点下1桁にするのはどうしたらよいのでしょうか?

専門家に質問してみよう