- ベストアンサー
Access(アクセス)での文字列の置換について
商品データベースをCSVでダウンロードし、一括で変更しようとしています。 Excelでは1つのセルに911文字以上のテキストが入っていると置換ができないようなんですが、アクセスではどうなのでしょう。 ちなみに、置換したいフィールドにはhtmlが入っていて、1000文字を超すフィールドもたくさんあります。 また、Excelはバージョンによって、ダブルクォーテーションを含むCSVデータ(htmlなど)は上手く1フィールドとして認識できないようです。アクセスもそのような不具合があるのかも教えていただきたいです。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.2,3です。 > 置換したい文字列は特定のフィールド内の文字列で、それ以外のフィールドで > 仮に同じ文字列が存在しても、そこは変更してほしくなかった なるほど、それだと確かに、一律で変換してしまうNotPadなどでは無理そうですね。 > Accessでは、レコードの移動は可能でしょうか。 > 例えば、5行目のレコード(行)を1行目に移動するといったような。 csvファイルなどをAccessに取り込んだ場合、「レコードの並び順は基本的に 保持されない」と考えておいた方が無難です。 また、Excelでの「行の切り取り→切り取ったセルの挿入」のような操作も できません。 ただ、通し番号に相当するフィールドとデータを予め用意しておけば、 その通し番号で並べ替えを行うことで、「並び順の再現」は可能です。 また、同様に通し番号を書き換えた上で並べ替えを行うことで、 「レコードの切り取り・挿入」と実質的に同じ結果を得ることができます。 例えば、 > 5行目のレコード(行)を1行目に移動 といった場合は、通し番号のフィールド名を「ID」とすると、 1)「ID=5」のレコードのIDを、一時的に「0」(→適当な空き番号)に書き換え 2)「ID=0」以外の全てのIDに「1」を加算 3)「ID=0」のIDを「1」に書き換え という操作をした上で、IDで並べ替えてやる、といった具合です。 この書き換え・加算といった操作は、更新クエリというものを使えば、 Access上で簡単にできます。 (レコード1件ずつ、手入力でIDに1を加算していく、という必要はありません) *入れ替える必要のあるものがいくつもあるようだと、変換後に出力した csvを、Excelで処理してしまった方が速いかもしれません。 (その辺りは、臨機応変に、ということで・・・)
その他の回答 (3)
- DexMachina
- ベストアンサー率73% (1287/1744)
No.2です。 > >フィールドサイズが「メモ型」 > というのは、どういう意味でしょう。 Accessの場合は、Excelの列に相当するもの(フィールド)に対して、 予めどのようなデータを保存できるようにするかを決めます。 (例えば、通し番号なら長整数型、日付なら日付/時刻型、一般的な 文字ならテキスト型、など) *私自身はまだ試していませんが、最新のAccess2007では、この辺りを (あまり)考えなくてもデータベースが作れるようになっているらしいです* で、htmlの記録先の設定としてあり得るもの、及びその主な特徴は ・テキスト型; 入力された値にインデックスが設定できる(下の二つでは設定不可) (完全一致・先頭一致の検索が速くなる) ・メモ型; テキスト型よりも多くの文字数を記録できる ・ハイパーリンク型; 記録された値をクリックすることでハイパーリンク先にジャンプできる (上の2つでは、あくまで文字の羅列として扱われるだけ) といったところです。 今回のご質問では、主目的が「文字列の変換」とのことですので、 サイズを優先して「メモ型」を選択すればよいでしょう。 (実際には、インポートするためのウィザードを起動すると、最初の幾つかの データがサンプリングされて、適当なデータ型が設定されるので、 それに任せれば大丈夫だと思います) > 置換をした後に、CSVでエクスポートしたいのですが、フィールド名(一行目の > 項目名)もそのCSVに出力されるでしょうか。 まだAccessをお持ちでないとのことなので、操作の詳細な説明は省きますが、 インポートの際には、1行目の項目をフィールド名とするかどうかを選択できます。 (つまり、元のcsvの1行目が、データではなくフィールド名として取り込める) エクスポートの際にはそのフィールド名を出力することができますので、 特に問題はないものと思います。 ・・・ただ、Accessの購入を検討中ということを聞いて思ったのですが、今回の変換は、 Windowsに付属しているNotePadまたはWordPadでの変換(これもCtrl+H)では 無理なのでしょうか? (htmlには実質触れたことがないので、具体的にどんな変換をされようとしているのかが わかっていないのですが(汗)) もしかしたら、Accessに限定せずに、「テキストの変換」として再質問されれば、 もっと適切な方法のアドバイスがもらえるかもしれません。 ・・・以上、長くなりましたが、参考になりましたなら幸いです。
補足
すごくわかりやすい回答ありがとうございます。 自分が心配していたことはほとんど問題ないようです。 >NotePadまたはWordPadでの変換(これもCtrl+H)では 無理なのでしょうか? 自分も試みました。 が、置換したい文字列は特定のフィールド内の文字列で、それ以外のフィールドで仮に同じ文字列が存在しても、そこは変更してほしくなかったのです。実際に複数のフィールドに同じ置換え対象文字列が存在します。 なので、フィールドを限定して特定の文字列を置換えるために、ExcelかAccessが必要だと思いました。 もうひとつお聞きしたいのですが、 Accessでは、レコードの移動は可能でしょうか。 例えば、5行目のレコード(行)を1行目に移動するといったような。 次から次に質問してしまって申し訳ありません。 DexMachinaさんの回答はとてもわかりやすいので、、、
- DexMachina
- ベストアンサー率73% (1287/1744)
Accessのテーブルのフィールドサイズが「メモ型」なら、65,535文字まで 入力可能です。 (最大サイズが小さいのは「テキスト型」) こちらの環境にてAccessで新規テーブルを作成し、1フィールド1万文字の レコードを1件だけ入れて変換(Ctrl+Hキー)してみましたが、問題なく 動作しました。 但し、ExcelとAccessでは「Ctrl+H」で呼び出すダイアログの使い勝手が 違うので、注意して下さい。 一部の文字列の一致を見る場合、 Excelでは「セル内容が完全に同一であるものを検索する」のチェックが初期 状態で外れている)ので、置換前後の文字列を入力するだけでOKですが、 Accessでは「検索条件(H)」を、既定の「フィールド全体」から「フィールドの 一部分」に変更する必要があります。 (「フィールド全体」は、Excelで上記「セル内容が~」のチェックをオンにした時と 同様の、完全一致検索を行う場合に使用します)
補足
テストまでしていただいて、ありがとうございます。 実はこの置換ができるならAccessを購入しようという状態です。 が、もうひとつ気になることができました。 >フィールドサイズが「メモ型」 というのは、どういう意味でしょう。 中に入力するのはhtmlなんですが、何か問題はあるでしょうか。 また、置換をした後に、CSVでエクスポートしたいのですが、フィールド名(一行目の項目名)もそのCSVに出力されるでしょうか。 よろしくお願いいたします。
- masa1to1
- ベストアンサー率20% (1/5)
ACCESSのことで知っているところだけですが・・・ Accessのフィールド形式が「メモ型」ですと 半角で255文字までしか入りません。 ほかのフィールド形式はもっと少なく制限もあったはずです。 (詳しくはヘルプを見てください) ひとつのフィールドにあまり文字数を多くしないほうがよいかと。 レコード数が多くなると動作が鈍くなるんじゃないでしょうか? PCの負荷もかかるし。 置換の意味がよくわからないです。 多分AccessにCSVデータをインポートすることだと思いますが 商品データーベースからAccessへデータ置換? Accessもデータベースでは? 今あるデータベースからAccessに変える必要はあるの? 専門家ではないし、やりたいことの詳しいことがわからないので いいアドバイスできず、申し訳ありませんがうまいくいくといいですね。
補足
早々にありがとうございます。 また、説明が足らず申し訳ありません。 置換は、文字の検索と置換のことです。 あるフィ-ルドにはhtmlソースが入力されています。 そのhtmlソースの特定の部分を、一気に変更するのが希望です。 例: <p style="width:500px; text-align:right;"><a href="h… ↓↓↓↓↓↓↓ <p style="width:400px; text-align:left;"><a href="h… 商品データベースは、ASPから取得したCSVです。 もちろん、ASPの管理画面から1箇所ずつ修正して、画面を切り替えてまた修正するというのは可能なんですが、途方も無い時間を要します。なので、そのデータをCSVで取得し、(正確にはCSVでしか取得できません)一気に修正しようと思いました。が、Excelでは無理でした。 フィールドの文字数はできるだけ少なくしたいのですが、大切な情報を表示する部分でもあり、どうしても減らせませんでした。 いただいた回答からすると、最大でも半角255文字しか使えないと理解していいでしょうか。だとするとアクセスは本末転倒です。。。
お礼
なるほど! IDを使った並べ替え了解です。 ありがとうございます。 本当に分かりやす回答ありがとうございました。