テキストデータのインポート方法とは?初心者にもわかりやすく解説

このQ&Aのポイント
  • テキストデータをMySQLにインポートする方法について、初心者向けに解説します。
  • ホストコンピュータのデータベースから出力したテキストデータを、MySQLのテーブルにインポートする手順について説明します。
  • テキストデータのレイアウトやMySQLのテーブル定義について詳しく解説し、初心者の方でもわかりやすく実施できるようにします。
回答を見る
  • ベストアンサー

テキストデータのインポートの仕方

初心者です。  汎用ホストコンピュータのデータベースのデータをMySQLにインポートをしたいと考えています。 テキストデータ(項目の区切りがない)で出力し、MySQLでテーブル定義し、インポートしてはと思っています。 1、ホスト側データのレイアウト ・顧客コード(英数字6桁)---> 123456 ・商品名(日本語5文字(10バイト) ---> 商品AAA ・数量(符号付、5バイト)---> +15 ・単価(符号なし、整数部6バイト、小数部 3バイト)---> 125.55 2、テキストデータ 12345商品AAA00015+00012555 3、MySQLのテーブル  CREATE TABLE テーブル名   ( kokyakucode varchr(6), shouhinmei ??????,   suryou    ??????,   tanka ?????? ) character set charset_name; ではと考えているのですが、????部分がわかりません。 よろしくお願いします。

  • MySQL
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

使用するMySQLのバージョンは、何でしょうか? 4.0、4.1、5.0等で、機能が大きく違います。特に4.1以降では、unicodeがサポートされているで、4.0までとは大きく違っています。 テキストデータ上はフィールドの区切りを持たないとのことですが、インポートは、どのような手段で行なおうと考えているのでしょうか? 少なくとも、これではMySQLが提供している「LOAD DATA INFILE」は使えません。 >顧客コード(英数字6桁)---> 123456 >kokyakucode varchr(6) 6桁固定なら「char(6)」で、6桁以下なら「varchar(6)」でいいでしょう。 >商品名(日本語5文字(10バイト) ---> 商品AAA MySQL 4.1以降か4.0までかによって、仕様が異なります。 MySQL 4.1以降として、回答します。 MySQLでは、ncharをサポートしていません。その代わり、charに半角、倍角の両方の文字が入り、バイト数でなく文字数で制限を受けます。 例えば、char(3)なら、以下のようになります。 'abc'→格納可 'あbc'→格納可 'あいう'→格納可 'abcd'→格納不可 'あいうえ'→格納不可 ということで、「varchar(5)」で日本語5文字まで格納可能です。 >数量(符号付、5バイト)---> +15 -99999~+99999までを保持したいということでしょうか? 「mediumint」または「int」が適当と思います。 >単価(符号なし、整数部6バイト、小数部 3バイト)---> 125.55 「dec(9,3)」が適当と思います。

参考URL:
http://dev.mysql.com/doc/refman/4.1/ja/column-types.html
friskjp
質問者

お礼

早々のご回答有難うございました。 わかりやすい説明で理解できました。 MySQLのバージョンは5.0です。 書き忘れました。 ACCESSだと、テキスト上のフィールドの区切りがなくても、テーブルの定義情報で判断できたので、MySQLもできるのではないかと思い調べましたが、CSV以外は見つかりませんでしたので、こちらで質問致しました。 テキストデータ → ACCESS → MySQLサーバ  ではと考えています。 でも、MySQLの一歩目で時間をこれでとられていましたので、すっきりしました。 感謝します

関連するQ&A

  • MYSQLデータのインポート

    レンタルサーバにある、mysqlのテーブル及びデータを自分の端末(ローカルホスト)のmysqlにインポートしたいのですが、どなたか効率のいい方法をご存知の方おられたら、教示してください。

  • テキストデータをpostgreSQLのデータベースに一括インポートする方法(perl)

    今、テキストデータをpostgreSQLのデータベースに一括インポートする CGI(perl)にて作成中なのですが、息詰まってしまい、わかる方が いましたら、ご伝授いただければと思い質問させていただきました。 ■CGI(test-inport.cgi)    ~ 省略 ~ $cmd = "●●●"; system($cmd); $cmd = "psql -h ホスト名 -c 'copy テーブル名 from 'テキストファイル名'"; system($cmd); ※ここのホスト名は何を書いたらいいのでしょうか? 良かったら、教えて下さい。 上記ので、●●●に、telnet で使用する \i テーブル名 などを入れて、DBを作成し、そこにテキストデータを流したい と思っています。 しかし、 $cmd = "\i テーブル名"; system($cmd); が動きません。 どのように、書けばいいのでしょうか? 良かったら、教えて下さい。 また、アルゴリズム自体がおかしい場合は、 違う手法も教えていただければと思います。

    • ベストアンサー
    • Perl
  • Access2000 テキストデータのインポート

    質問させていただきます。 テキストデータ(カンマ切り、項目A,項目Bともにテキスト型)をインポートしたのですが、項目Aはたとえば、1または2バイト目がスペースのデータ、スペースなしのデータなど混在しています。テキストデータの通りにインポートしたいのですが、Accessに取り込むとスペースのないデータ(すべて左詰)になってしまいます。 どうすればテキストデータ通りにインポートできるでしょうか?

  • ACCSEEのインポートでテキストファイルにて

    MS-ACCESSでテキストデータのインポートを行おうとしているのですが、マクロを使用してインポート(符号付インポートにて)を行うと、インポート先の形式をテキスト型にしているのに、前ゼロが無くなります。 手動でインポートではうまく行くのですが、何とかマクロでも前ゼロをつけたいので、教えてください。

  • MySQLにデータをインポートできない

    MySQLにAccessのテーブルデータをインポートする方法はありませんか?教えてくださーい!

    • ベストアンサー
    • MySQL
  • PHPでMySQLのデータのインポート&SELECT結果のダウンロード

    こんにちは。いつもここにはお世話になっています。 ご質問が何点かあって申し訳ないのですが、簡単に作ろうとしているスクリプトを説明すると一日一回夜中にCSVかTEXT形式でデータがアップされます。それをMysqlの指定したテーブルにインポートします。その際前日のデータは全て削除します。作られたCSVファイルも削除したいんです。翌日にそのインポートされたデータを検索し必要に応じて検索されたデータをダウンロードできるようにしたいんです。ダウンロードするファイルはCSVでファイル名はテーブル名に検索した時の時間をつけた名前。これを全てPHPで行いたいんです・・・。 現在検索とSSHでログインしてのMysqlにインポートはできました。ダウンロードはまだ挑戦していないのですが、まずファイルを作ることとPHPでのデータのインポートができるのかわかりません。 質問なのですが、 1.分かりにくいのですが、上記のようなことはPHPで可能でしょうか? 2.データのインポートはPHPではどのようにしたらいいのでしょうか? 3.テーブル内のデータの削除はDELETEを使えば可能なのはわかりましたが、指定したフォルダ内のファイルを削除する方法はありますか? 4.SELECTで検索したデータが画面に表示されダウンロードできるようにファイルを作るのに $sql = "SELECT * FROM テーブル名 WHERE フィールド = \"条件\" "; $sql .= "INTO OUTFILE \"/home/パス/テキスト.CSV(or txt)\""; $res = mysql_query($sql); とスクリプトを記述しましたが出来ませんでした。 SShでmysqlにログインをして mysql> SELECT * FROM テーブル名 WHERE フィールド = '条件' -> INTO OUTFILE '/home/パス/テキスト名.txt'; とするとできたのですが、単純にこれをSELECT等と同じようにしたらダメなのでしょうか? 質問が多く申し訳ないのですが、ご教授をよろしくお願いします。

    • ベストアンサー
    • PHP
  • 【至急】さくらサーバーMySQLインポート出来無

    誰か助けて下さい!! さくらインターネットのデータベースで、 MySQLのヴァージョンが低くて、 設置不能のブログ(ワードプレス等)があったので、 ヴァージョンを最新する方法を探していました。 「一回消して再登録する」という記事を読んで、 バックアップも取った上で再登録したのですが、 データをインポートできません。 以前のものは mysql24.db.sakura.ne.jp 今回のは mysql443.db.sakura.ne.jp です。 エクスポートしたデータは「SQL」 「SQL圧縮」「 CSV 」の3つで保存してあります。 再度データベースを作るときにデータベース名を入力する欄がありましたが 以前使っていたものには、そんな入力は要求されなかったような気がします。 もしかしたら、それが原因かも…と思っているのですが、 お分かりになる方いらっしゃいませんでしょうか。 エラーはこちら *-------------------------* エラー 実行した SQL: -- -- データベース: `aaa_01` -- CREATE DATABASE `aaa_01` ; MySQLのメッセージ: #1007 - Can't create database 'aaa_01'; database exists *------------------------------*

  • 【ACCESS】インポート定義を使わないCSVインポート

    ACCESS VBAにてMDBにSQL文でCSVデータをINSERTしようとしています。INSERT自体はうまくいったのですが、データの型をうまくそろえられません。2日程ネットサーフィンしているものの良いサンプルを見つけられません。有識者の方、ご存知でしたら是非教えてください! まず、CSVデータは以下のようなものです。 ===aaa.csv=== 00000001,2009/1/31 00000002,2009/1/31 ・ ・ A000001,2009/1/31 Z000002,2009/1/31 ========== これを 既存テーブル:aaa_TBLに取り込ませたく、以下のSQL文を書きました。 INSERT INTO aaa_TBL(カラム1,カラム2) SELECT FORMAT([aaa#CSV].F1,'0000000'),[aaa#CSV].F2 FROM aaa#csv IN 'C:\' 'Text;HDR=NO' これにて「0000001」と「000002」等のレコードは正常に取り込むことができましたが、「A000001」「B000002」等のデータは取り込まれず、NULLにて登録されておりました。 (aaa_TBL自体はカラム1=テキスト型、カラム2=日付型でCreateされております。) これを回避したく、いろんなサイトを訪問したのですが、ほとんどがインポート定義を使った方法を推奨しておりました。 しかしながら、私にはどうしてもインポート定義が理解できないんです! 「VBAにて○○.iniを作成する方法」などをよく見かけるんですが、できるだけ他の方法を検討したいと考えております。(今後、ACCESS VBAから他言語への乗り換えを考えているとか、他CSVにてインポートされるテーブルの数が30個程あるので、インポート定義ファイルの管理がつらいな・・・とか色々他にも理由はあるんですが・・・・) 何か良い方法はないでしょうか?! やはりインポート定義を作らないとだめでしょうか?! その場合、簡単なサンプルコードなどを頂けますと非常に助かります。。。(MSサイトのサンプルコードは理解できませんでした。。。) まだVBAを勉強し始めて2週間なので、色々突っ込みどころはあると思いますが、どうぞよろしくお願いしますm(_ _)m

  • テーブルデータのインポートについて

    バージョンはAccess2003です。 テーブルAとテーブルBがあります。 CSVからデータをインポートし、全データがテキスト型で保存されています。 テーブルBには最終的にデータを保存したいフィールドプロパティが定義されています。 VBを使ってテーブルAからテーブルBにインポートしたいと思っています。 テーブルAのデータをテーブルBの定義に合うように加工するにはどうすればいいのでしょうか? アドバイスよろしくお願いします。

  • phpMyAdmin テキストインポートエラー

    phpMyAdmin テキストインポートエラー いつもお世話になっております。 php,MySQL,phpMyAdmin 初心者です。 ゆうちょ銀行のHPから郵便番号データを入手し、phpMyAdminを利用してMySQLへインポートしたいのですが、 エラーになってしまいます。 ●環境・設定 phpMyAdmin-2.11.6 MySQL 5.0.45 MySQL の文字セット: UTF-8 Unicode (utf8) ■実行手順 (1)郵便番号データ入手 (2)Access2003にインポート(テーブル化) (3)必要フィールドを選択しテキスト変換(エクスポート) (4)テキストをUTF-8で保存 (5)phpMyAdminのインポート機能を実行 (6)結果(以下エラー内容) 実行した SQL: "2770023", "チバケン", "カシワシ", "チュウオウ", "千葉県", "柏市", "中央" "2770831", "チバケン", "カシワシ", "ネド", "千葉県", "柏市", "根戸" MySQLのメッセージ: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"2770023","ï¾ 何か良い解決策がありまいたらご教授いただければと思います。 宜しくお願い致します。

    • ベストアンサー
    • MySQL