アクセスデータ取り込み時の注意点とは?

このQ&Aのポイント
  • アクセスデータをUTF-8のテキスト形式で取り込む際に、NULLを含むレコードの処理に注意が必要です。
  • データのフィールド数がレコードごとに異なる場合、取り込む際にデータの一部が欠落する可能性があります。
  • 文字コードやフィールドのデータ型を指定する際に、フィールド数の不足に注意が必要です。
回答を見る
  • ベストアンサー

アクセスのデータ取り込みについて

UTF8のテキストデータを取り込みする際 データが10フィールドあるとします。 1レコード目の1フィールド目から9フィールド目までデータがあり、10フィールド目はNULL 2レコード目の1フィールド目から10フィールド目までデータがある場合 テキストデータ自体9フィールド目までしか取り込めない場合がございます。 こういったレコード終端がNULLの場合とNULLでない場合に取り込む際 注意することはありますでしょうか?? 因みにデータを取り込む際、文字コードを指定しフィールドの データ型を変更する際 存在するフィールドに比べアクセス上ではフィールド数が足らなくなるのですが・・・ どうぞよろしくお願いします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

UTF-8 で間違いはないのでしょうかね。 以下思いついたことです。 1・BOMの有無で読み込みが変わらないか。 2・Shift-JIS に変換してしまったら・・。 3・ADODB.Stream で読み込んだら。 http://d.hatena.ne.jp/replication/20091117/1258418243 4・Excelに一旦読み込ませたらどうなるか。 5・テキストファイルをそのままデータベースとして開いたら。 http://home.att.ne.jp/zeta/gen/excel/c04p47.htm そちらのAccessのバージョンが不明なので "Provider=Microsoft.Jet.OLEDB.4.0;" & は "Provider = "Microsoft.ACE.OLEDB.12.0;" かも知れない。 X・もしかしてファイルが壊れてる? そのファイルの製作元にShift-jis で出力できないか頼んでみる。 以上、ご参考まで。

yairi1106
質問者

お礼

アドバイスありがとうございます。 今回のテストした文字コードUTF8のテキストデータは ADODB.Streamを使用して入出力したデータのみ でした。 他の言語で入出力したデータに関しては 問題なく取り込めました。 とりあえず原因が分かっただけでも参考になりました。 BOMの有無で色々と検証してみます。 因みに文字コードに関しては ハングル文字を含んだUTF8形式のテキストになりますので Shift-jis戻すと、ハングル文字もしくは外字が 文字化けしてしまいます。 ですのでUTF8形式で、色々と原因を洗い出していきます。 どうもありがとうございました。

その他の回答 (1)

noname#259146
noname#259146
回答No.1

データ取り込み手順が不明なので回答できません。 とくに取り込みデータの形式がわかると回答ができると思います。 通常どこかの行の最終列に値があれば問題がないと思います。

yairi1106
質問者

補足

取り込み手順についてご説明いたします。 テキストデータ47フィールド(NULL含む) 1_アクセスのソフトを空のデータベースから立ち上げます。 2_外部データ→テキストファイル→ファイル名指定→OK 3_テキストインポートウィザード→設定→コードページをUTF8に指定→データ型をすべてテキスト型に指定 この時47フィールドあるのにインポート定義のフィールド名は42しかありません。 4_主キーを設定せずにその他はいじらず次へ→完了 この手順方法でなぜが47フィールドにデータが存在するのに 46フィールドまで取り込めています。 なにか分かりましたらアドバイスください。 よろしくお願いします。

関連するQ&A

  • アクセスでのテキストデータ取り込みについて

    アクセスでテキストデータを取り込む際でのご質問がございます。 外部データからテキストデータを指定して 文字コードを指定して指定フィールドを文字列(テキスト型)として取り込もうとする際 例 取り込み前のデータ(文字列の後ろにスペースを含んだ半角20桁の文字列)    "1234567‐11‐2‐3 " "1234567‐234 " " "   *投稿画面ではスペースが表示されません)   文字列(テキスト型)として取り込んだデータ    "1234567‐11‐2‐3" "1234567‐234" "" となりスペースが消されてしまうのですが スペースが消されないでテキストデータを 取り込める方法をご存知の方いらっしゃいますでしょうか? どうぞよろしくお願いします。

  • アクセス 空フィールドのみ 別データー挿入

    アクセスの同テーブル内に下記レコード(1)(2)が有ります。 (1)レコードのフィールドにはほぼデータが入っていますがNULLのフィールドもあります。 (2)レコードのフィールドはほとんどNULLです。 (1)のレコードのフィールド、データーを取得して (2)のレコードのフィールドがNULLの場合は(1)のフィールドのデーターを貼付ける 例えば下記の(3)様にしたいです。 |数値型 |テキスト型 |日付型  |通貨型  |メモ型 |Yes/No型 | |ID    |名前     |入力日  |金額   |     |チェック   | (1)|01   | さる    |07/28 |1,000 |     |-1     | (2)|02   |とら     |       |      |     |       | (3)|02   |とら     |07/28 |1,000 |     |-1     | 自分なりに考えた所 DLookUp で一つ一つ(1)フィールドを取得して(2)フィールドNULLの場合は挿入し(3)にする方法を 考えましたが、フィールド数が実際には100ほど有り方法が良くないと思いました。 Cloneメソッドを使用して同じフォームに(1)と(2)データーを表示させて上手く出来ないか 考えたりもして見ましたが上手く行きません 良い方法が思いつきません こんな方法があるとか このサイトを参考にしなさいとか どなたかご教授頂けませんでしょうか よろしくお願い致します。

  • アクセス2010でのファイル保存方法

    アクセス2010で、UTF8形式のテキストを開き、レコードごとにデータを 抽出する際でのご質問がございます。 指定された県の郵便番号を、レコードを抽出して、ファイルで保存する際、テキスト型文字コードUTF8に指定して保存したのですが、レコード内のフィールド文字列でスペースを含んだ半角文字14桁と全角文字8桁の混合文字列が、保存後、前半部分の半角文字のスペースがなくなってしまいます。 下記のような例がイメージとなります。 例 ァァァ           亜亜亜亜亜亜亜亜    ↓   ァァァ 亜亜亜亜亜亜亜亜  (半角領域のスペースが1桁しかなくなってしまう) のようになってしまうのですが なにか良い保存方法はありますでしょうか? どうぞよろしくお願いします。

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

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

  • NULL値を含む場合のフィルタ

    アクセスです。 テーブルに フィールド1 フィールド2 A    B       B  C       C と入ってるとします。 フィールド2についてはNULL値のレコードもあれば、 値が入ってる場合もあります。 このテーブルをフォームにひもづけていて、(帳票フォームにしています) フォームヘッダーにテキストボックス2つとコマンドボタンがあり Private Sub コマンド_Click() Me.Form.Filter = _ "フィールド1 like '*" & Me.テキスト_1.Value & "*'" & " and " _ & "フィールド2 like '*" & Me.テキスト_2.Value & "*'" Me.Form.FilterOn = True End Sub としたときに、レコードのフィールド2に文字が入ってる場合は、抽出できるのですが、 フィールド2がNULLの場合は、1件もヒットしません。 テキスト_1にはAを入れて テキスト_2には何も入れないで検索してみると、1件もヒットしませんが、 テキスト_1にBを入れて検索すると、Bのレコードが抽出されます。 もちろん テキスト_1もテキスト_2もBをいれても、Bのレコードが抽出されます。 VBAコードで & "フィールド2 like '*" & Me.テキスト_2.Value & "*'" としてるので、NULL値でも抽出されると思ったのですがなぜ何も抽出されないのでしょうか? ワイルドカードでnull値も検索されないのでしょうか? テーブルのフィールド2のデータをNull値ではなく、””にしたら、問題なく抽出されましたが データのNull値はNull値のままにして、空白などの文字には置き換えたくないです。 (というか、すべてのNULL値に空白を入れる作業が大変なのでやりたくないです。 実際のフィールド数は50個くらいあります) よろしくお願いします。

  • アクセスのクエリの組み方を教えてください

    アクセスで、クエリを組みたいのですがうまくできません。 添付画像をご覧ください。 テーブル1の中の「仕入コード1」フィールドと「仕入コード2」フィールドと 仕入コードマスタの「仕入コード」フィールドとの掛け合わせを行いたいです。 その結果、 (1)「仕入コード1」フィールドに存在して、「仕入コード」フィールドに存在しない、 (2)「仕入コード2」フィールドに存在して、「仕入コード」フィールドに存在しない レコードを一度に抽出したいです。 今回の場合であれば、品番222(含むAB)と品番333(含むAD)の2レコードを抽出したいです。 クエリを組みましたが、うまくそのようにできませんでした。 クエリのどこがおかしいのか?ご指摘頂けませんでしょうか。よろしくお願いいたします。

  • アクセスのテキスト型フィールドの初期値

    アクセスのテーブルにテキスト型フィールド「●●日付」を作成しました。さらに、定型入力の方法として、日付(____/__/__)を指定しています。 このテーブルから、クエリでデータを取得する際、●●日付にデータを入力していないレコードのみを取得したいと思い、クエリの抽出条件として=""(ダブルクォーテーション)や=''(シングルクォーテーション)と記載したのですが、レコードが1件も抽出されません(もちろん●●日付にデータを入れていないレコードは複数あります)。一方で、<>""や<>''で、●●日付にデータが入力されているレコードを抽出しようとした場合は、●●日付にデータが入力されているレコードが抽出されます。 テキスト型フィールドにデータが入力されていないレコードを抽出するクエリはどのようにしたら作成できるのでしょうか?

  • エクセルとアクセスのデータ比較(VB6.0)

    エクセルとアクセスのデータ比較ツール(VB6.0) 質問者:SSCSC アクセスからエクセルにコピペされたレコードがあるとします。 そのエクセルのレコードのあるフィールド値を変更します。(このとき、アクセスもエクセルと同様に変更します。) 上記は手作業でします。 そこで、そのエクセルのレコードがアクセスに存在するかどうかをプログラムで作成したいと思っております。 要するにエクセルとアクセスのデータ比較をして、一致していないレコードがエクセルに存在した場合は、ログを出力したいと思っています。 アクセスのデータが比較基準になります。 何か簡単にできる方法はないでしょうか。 今思いついている方法は、 エクセルの1行目はコピペ時にアクセスのフィールド名がコピーされているので、 エクセル、アクセス両方のフィールド値を全て比較対象にしてSQL文で存在するかどうかを確認する方法です。 ご回答よろしくお願い致します。

  • ACCESS 重複データを1つだけ表示したい(初心者です)

    ACCESSで複数のフィールドに全く同じレコードが複数存在します (例) フィールド1  フィールド2  フィールド3 愛知      田中      12 愛知      田中      12 愛知      田中      12 三重      山本      23 三重      山本      23 岐阜      鈴木      33 岐阜      鈴木      33 もともと他のデーターベースからCSVで落としたものをインポートしているので、データの存在自体はどうしようもありませんが、これらの重複しているデータを1件だけ表示したいのです。つまり (例) フィールド1  フィールド2  フィールド3 愛知      田中      12 三重      山本      23 岐阜      鈴木      33 どのようにすればよいでしょうか。

  • Accessからのソケット通信について

    Access2010(VBA)+BASP21を利用して 別のアプリに対してテキストデータをソケット通信で受け渡す際の 文字コードについて教えて下さい。 まず、受け取る側のアプリはUTF-8でないと 受け取れない仕様となっております。 Accessから送信する際は、あらかじめUTF-8で保存された テキストファイルを変数に読み込み、それをBASP21から送信しているのですが どうやら、送信する時に文字コードが変わっている?のか ただしくデータを受け取ってくれません。 (アプリの受信ログを見ると、受け取ったデータが 一部文字化けしておりました) Accessからデータを送信する際に、確実にUTF-8にて データを送信したいのですが、どのような方法があるでしょうか。 ご存じの方、教えて下さい。宜しくお願い致します。