select * での表示が崩れる?

このQ&Aのポイント
  • WindowsXPsp2,MySQL4.0.23で、select * での表示が崩れる原因と対策を教えてください。
  • SQLファイルを流し込んだ際に、テーブルの表示が崩れる問題が発生しました。どのようにすれば正常に表示させることができるのでしょうか?
  • sourceコマンドでデータを流し込んだ際にWarnings:4と出るのですが、これは問題ないのでしょうか?
回答を見る
  • ベストアンサー

select * での表示が崩れる?

WindowsXPsp2,MySQL4.0.23です。 雑誌の記事を参考に以下のようなsqlファイルを作成し、sourceコマンドで流し込みをしました。流し込むファイルの内容も下記に示します。 [sqlファイル] use docsdb; drop table titletb; create table titletb ( tid int unsigned auto_increment primary key, tyear year not null, tmonth tinyint not null, title1 varchar(100) not null, title2 varchar(100), title3 varchar(100) ); grant select,insert,update,delete on docsdb.titletb to docsuser@localhost identified by 'password'; load data infile 'datafile' into table titletb; [datafile](スペースはタブ文字です) 2004 1 ああああああ ううううう 2004 2 いいいいいい ううううう これによって作成したテーブルを、 select * from titletb; とすると結果が崩れて表示されてしまうのです。 格納されている情報に問題はなく、カラムごとに区切って表示させればちゃんと期待通りに格納されています。 何かやり方を間違っているのでしょうか? 普通に崩れずに表示させるにはどうすればよいのでしょうか? それと、sourceコマンドで流し込んだ際に、Warnings:4と出るのですがこれは問題ないのでしょうか? よろしくお願いします。

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

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

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

[datafile](スペースはタブ文字です) 2004 1 ああああああ ううううう \N /n 2004 2 いいいいいい ううううう \N /n としてください。 書き込みでは反映されないようですが、各行の先頭にはタブをうっています。(もしかしてあなたもされているかも) ・理由 カラムとデータが対応していません。 IDは何も記入しなくていいのでタブのみうってください。 (反映されていないだけでしたらすみません) title3はNULLとなるため\Nとしましょう。 改行は/nとしておくといいでしょう。

tochanx
質問者

お礼

ありがとうございます。おっしゃるやり方で無事崩れずに表示されました。とても感謝しております。本当にありがとうございました。 おっしゃるとおり先頭にはタブを打っております。どうやらここでは先頭のスペースは投稿時に削られるのですね。 ということは今回の私のトラブルはカラムとデータが対応していないのではなくて空白のフィールドを\nとしなかったことによるものなのでしょうか? それと、改行を/nとするということですが、今回のように外部ファイルからデータを流し込む際のデータファイルは、データの入力の際エンターキーによる改行を行わずにその部分に/nを入れるということでよろしいでしょうか?

その他の回答 (1)

回答No.2

#1です。 普通に表示できてよかったですね。頑張ってください。 >ということは今回の私のトラブルはカラムとデータが対応していないのではなくて空白のフィールドを\nとしなかったことによるものなのでしょうか? tid,tyear,tmonth,title1,title2,title3の6項目に対して1行に5項目しか入っていなかったことが言いたかったことです。 >それと、改行を/nとするということですが、今回のように外部ファイルからデータを流し込む際のデータファイルは、データの入力の際エンターキーによる改行を行わずにその部分に/nを入れるということでよろしいでしょうか? load data infile 'datafile' into table titletb以降にタブに変わるもの・改行に使う記号を指定できますが、デフォルトではタブで区切り・/nで改行となります。“Windowsでは/r/nにしましょう。”といわれることもあります。何も無くてもいいですが、Warningsの数が増えます。

tochanx
質問者

お礼

理解できました。 わざわざお答えいただきありがとうございました。

関連するQ&A

  • 特定のフィールドにデータが入っている件数を表示したい

    ageというフィールドにデータが入っているものだけを抽出してその件数を表示したいのですが、どのようなsql文を書けばいいでしょうか? ageフィールドは、種別「varchar(255)」、NULL「いいえ」、デフォルト値「空欄」になっています。 $sql = "SELECT COUNT(*) AS cnt FROM table where 'age' is not null;"; これではうまくいきませんでした。ageのデフォルト値をNULLにすれば解決するのでしょうか?

    • ベストアンサー
    • MySQL
  • MySQL データベースを選択したい

    こんにちは。 SQLの初歩的な操作で躓いています。 MySQL 3.23.51-nt (WondowsXP) を使用しています。 PHPベースの掲示板を作成していまして、次の一連の作業をしたいのですが、 ALTER TABLE phpbb_categories ADD cat_main_type CHAR(1); ALTER TABLE phpbb_categories ADD cat_main MEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL; ALTER TABLE phpbb_categories ADD cat_desc TEXT NOT NULL; ALTER TABLE phpbb_forums ADD forum_link VARCHAR(255); ALTER TABLE phpbb_forums ADD forum_link_internal TINYINT(1) NOT NULL; ALTER TABLE phpbb_forums ADD forum_link_hit_count TINYINT(1) NOT NULL; ALTER TABLE phpbb_forums ADD forum_link_hit BIGINT(20) UNSIGNED NOT NULL; ALTER TABLE phpbb_users ADD user_sub_forum TINYINT(1) DEFAULT '1' NOT NULL; ALTER TABLE phpbb_users ADD user_split_cat TINYINT(1) DEFAULT '1' NOT NULL; ALTER TABLE phpbb_users ADD user_last_topic_title TINYINT(1) DEFAULT '1' NOT NULL; ALTER TABLE phpbb_users ADD user_sub_level_links TINYINT(1) DEFAULT '2' NOT NULL; ALTER TABLE phpbb_users ADD user_display_viewonline TINYINT(1) DEFAULT '2' NOT NULL; 上記をを打ち込んでもError 1046: No Database Selected と言われます。 そこでどのようにしてデータベースを選択する事が出来るのでしょうか? よろしくお願いいたします。

  • エラーになってしまうCREATE文

    MySQL 5.0.21(Win版)を導入してみたのですが、 http://hotwired.goo.ne.jp/webmonkey/2000/01/index2a_page5.html にある下記のSQL文を「MySQL Command Line Client」から実行すると CREATE TABLE employees ( id tinyint(4) DEFAULT '0' NOT NULL AUTO_INCREMENT, first varchar(20), last varchar(20), address varchar(255), position varchar(50), PRIMARY KEY (id), UNIQUE id (id)); を実行すると、 mysql> CREATE TABLE employees ( id tinyint(4) DEFAULT '0' NOT NULL AUTO_INCREMEN T, first varchar(20), last varchar(20), address varchar(255), position varchar(5 0), PRIMARY KEY (id), UNIQUE id (id)); ERROR 1067 (42000): Invalid default value for 'id' mysql> とエラーになってしまいます。なぜでしょうか?

    • ベストアンサー
    • MySQL
  • SQLの表示を整える

    SQLの表示を見やすくしたく色々調べているのですが、 下記の【以下のような表示にしたい!】のような 表示にするにはどうすればよいでしょうか? 【何もsetしない場合】 SQL> desc TBL 名前 NULL? 型 --------- -------- ---------------------------- ID NOT NULL VARCHAR2(32) TYPE NOT NULL VARCHAR2(2) CORP NOT NULL VARCHAR2(32) CRT NOT NULL DATE SQL> select ID,TYPE,CORP,CRT from TBL; ID -------------------------------------------------------------------------------- TYPE ------ CORP -------------------------------------------------------------------------------- CRT -------- admin U 99 05-08-22 ID -------------------------------------------------------------------------------- TYPE ------ CORP -------------------------------------------------------------------------------- CRT -------- * G 99 05-08-22 【setした場合】 SQL> set linesize 10 SQL> set pagesize 50 SQL> select ID,TYPE,CORP,CRT from TBL; ID ---------- TYPE ------ CORP ---------- CRT -------- admin U 99 05-08-22 * G 99 05-08-22 【以下のような表示にしたい!】 (要は、ID,TYPE,CORP,CRPの各列の下(真下)に値を表示したい) ID________TYPE__CORP______CRT ---------------------------------- admin_____U_____99________05-08-22 *___________G_____99________05-08-22 #<余談> #上記'_'は空白です。 #複数の空白を記入しても1文字分しか表示されないため、このようなことをしています。(これも上手く表示できてませんが) #教えて!gooで”複数の空白を連続して表示する”場合、 #どのように記入すればよいでしょうか? よろしくお願いします。

  • SQLのSELECT文について

    以下の注文テーブルで、注文件数と送料と注文合計金額を一度に取得する場合、以下のようなSQL文で合っていますか? "SELECT order.total, order.delivery_fee, SUM(order.total * order.tax) AS total_for_paying FROM order"; CREATE TABLE `order` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `status` tinyint(3) UNSIGNED NOT NULL DEFAULT '0', `order_payment_status` tinyint(3) UNSIGNED NOT NULL DEFAULT '0', `buyer_id` bigint(20) UNSIGNED NOT NULL, `discount` INT(11) UNSIGNED NOT NULL, `delivery_fee` INT(11) UNSIGNED NOT NULL, `charge` INT(11) UNSIGNED NOT NULL, `total` INT(11) UNSIGNED NOT NULL, `tax` INT(11) UNSIGNED NOT NULL, `total_with_tax` INT(11) UNSIGNED NOT NULL, `total_for_paying` INT(11) UNSIGNED NOT NULL, `use_point` INT(11) UNSIGNED NOT NULL, `created` DATETIME NOT NULL, `updated` DATETIME NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

    • ベストアンサー
    • MySQL
  • updateについて

    下記、SQLコマンドを実行するとMERTINの歩合給がSMITHのSALに格納されません。実行後、NULLが入ってしまいます。 ちゃんとemp表のMERTINのCOMMには値が入っているのになぜ実行結果がうまくいかないのでしょうか? 回答のほどよろしくお願い致します。 update w_emp set sal = (select comm from emp where ename = 'MERTIN') where sal < 1000 SQL> select * from w_emp; DEPTNO EMPNO ENAME JOB SAL 20 7902 FORD ANALYST 3000 20 7369 SMITH CLERK 10行が選択されました。 SQL> desc w_emp; 名前 NULL? 型 DEPTNO NOT NULL NUMBER(2) EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) SAL NUMBER(7,2) SQL> desc emp; 名前 NULL? 型 EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NOT NULL NUMBER(2)

  • joomlaのインストールについて

    joomlaのインストールでmysqlのデータベース情報を入力し次へを押すと下記のメッセージがでます。 (インストール画面では無く、白いページに文字だけが表示されています) 接続は出来ていると思うのですが、どうしたらインストールを続けることが出来るのでしょうか? 【環境】 FreeBSD7 php5 mysql6 【メッセージ】 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 'TYPE=MyISAM' at line 29 SQL=CREATE TABLE `jos_banner` ( `bid` int(11) NOT NULL auto_increment, `cid` int(11) NOT NULL default '0', `type` varchar(90) NOT NULL default 'banner', `name` TEXT NOT NULL default '', `alias` varchar(255) NOT NULL default '', `imptotal` int(11) NOT NULL default '0', `impmade` int(11) NOT NULL default '0', `clicks` int(11) NOT NULL default '0', `imageurl` varchar(100) NOT NULL default '', `clickurl` varchar(200) NOT NULL default '', `date` datetime default NULL, `showBanner` tinyint(1) NOT NULL default '0', `checked_out` tinyint(1) NOT NULL default '0', `checked_out_time` datetime NOT NULL default '0000-00-00 00:00:00', `editor` varchar(150) default NULL, `custombannercode` text, `catid` INTEGER UNSIGNED NOT NULL DEFAULT 0, `description` TEXT NOT NULL DEFAULT '', `sticky` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, `ordering` INTEGER NOT NULL DEFAULT 0, `publish_up` datetime NOT NULL default '0000-00-00 00:00:00', `publish_down` datetime NOT NULL default '0000-00-00 00:00:00', `tags` TEXT NOT NULL DEFAULT '', `params` TEXT NOT NULL DEFAULT '', PRIMARY KEY (`bid`), KEY `viewbanner` (`showBanner`), INDEX `idx_banner_catid`(`catid`) ) TYPE=MyISAM

    • 締切済み
    • PHP
  • MySQL SELECTの指定について

    まず、御覧頂きありがとうございます。 早速質問なのですが、 CREATE TABLE `hoge` ( `id` int(8) NOT NULL, `name` varchar(30) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `hoge` (`id`, `name`) VALUES (1, 'hogeA'), (2, 'hogeB'), (3, 'hogeC'), (4, 'hogeD'); CREATE TABLE `test` ( `id` int(8) NOT NULL, `name` varchar(30) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `test` (`id`, `name`) VALUES (1, 'testA'), (4, 'testD'); という値が入ってるテーブルがあるとします。(長くなってすみません) で、 hoge.id と test.id が重複した場合 test.name を表示させたいです。 期待値としては id,name 1.testA 2,hogeB 3,hogeC 4,testD になります。 業務でJoinを使うようなテーブル構造にそもそもしないというのもあり、クリティカルなSQLコードに不慣れで御知恵を借りたく質問させて頂きました。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • DDLのインポート方法

    musqlコマンドを使って下記テキストファイルのddlをインポートしたいのですが、下記コマンドを使ってもうまく行きません。 やり方がわからなく四苦八苦しています。お分かりの方がいらっしゃいましたら、ご教示をお願いいたします。 mysqlimport wgu_ec wagokoro_db_goods.sql mysqlimport: Error: Table 'wgu_ec.wagokoro_db_goods' doesn't exist, when using table: wagokoro_db_goods textファイル(ファイル名:wagokoro_db_goods.sql)の内容は下記の通りです。 /*--------------新着商品詳細---------------------*/ use wgu_ec; drop table if exists `CMS_NEWITEM_DETAIL_TB`; CREATE TABLE `CMS_NEWITEM_DETAIL_TB` ( `new_item_detail_id` int(8) unsigned NOT NULL auto_increment COMMENT '新着商品明細id' , `new_item_id` int(4) NOT NULL DEFAULT '0' COMMENT '新着商品ID' , `goods_id` int(8) NOT NULL DEFAULT '0' COMMENT '商品id' , `color_id` int(2) NOT NULL DEFAULT '0' COMMENT '色id' , `del_f` tinyint(1) NOT NULL DEFAULT '0' COMMENT '削除フラグ 1:削除' , `insert_date` datetime 0000-00-00 00:00:00 NOT NULL COMMENT '登録日時' , `insert_app_no` varchar(32) NOT NULL COMMENT '登録アプリ名' , `update_date` datetime 0000-00-00 00:00:00 NOT NULL COMMENT '更新日時' , `update_app_no` varchar(32) NOT NULL COMMENT '更新アプリ名' , PRIMARY KEY ( `new_item_detail_id` ) ) type Innodb ;

    • ベストアンサー
    • MySQL
  • かねやんMySQLAdmin1.43

    WinXpでmysqlを勉強中です。 かねやんMySQLAdmin1.43を使って、Sql発行を押し下のように書き込んで実行するとエラーがでます。 CREATE TABLE hotelmember ( hotel_name varchar(40) NOT NULL, com_name varchar(40) NOT NULL, charge_name varchar(40) NOT NULL, id varchar(40) NOT NULL, pass varchar(40) NOT NULL, mail varchar(40) NOT NULL, zip varchar(40) NOT NULL, add varchar(40) NOT NULL, tel varchar(40) NOT NULL, url varchar(40) NOT NULL, memo varchar(40) NOT NULL, PRIMARY KEY ( id ) ) エラー文 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 'add varchar(40) NOT NULL,tel varchar(40) NOT NULL, そこで add varchar(40) NOT NULL, tel varchar(40) NOT NULL, url varchar(40) NOT NULL, memo varchar(40) NOT NULL, を削除するとうまくテーブルが作成されます。 なにが悪いんでしょうか?

    • ベストアンサー
    • MySQL