
load data infile~で一括登録する上で、
最後の列に、空白またはnull指定しても、
ちゃんと登録されてくれません。
create table ~(
id char(12) not null primary key,
1R varchar(12),
2R varchar(12),
3R varchar(12));
実際に一括登録するデータは以下です(スペースはタブ区切り)
2R・3Rに対して、このように実験的に入れてみました。
1 aa1 \N \N\n >Nullを指定
2 bb1 \n >タブ区切りの空白指定
3 cc1\n >タブ自体をを書かない
登録結果は以下のようになりました。
1 aa1 NULL N
2 bb1
3 cc1 NULL NULL
id1の行については、2RにはNULL値が登録できたのですが、
3Rには「N」と表示されています。
しかし、ただのNではないみたいで、
(where 3R like 'N_')としないとヒットしません。
また、'_'は空白ではないらしく正体不明です。
id2の行については、2Rは空白になっていますが、
3Rは(where 3R = '')としてもヒットせず、
なぜか(where 3R like '_')にヒットします。
これもまた、'_'は空白ではありません。
冒頭にも書きましたが、このように
最後の列にうまく空白やNullが登録されません。
id3の行のように、
値のある列までで閉じてあげると綺麗に入ります。
力ずくでid3のように成形してあげることもできますが、
一括登録という便利な機能を使う上で何か違う気がします。
環境 windowsXP+MySQL5.0
文字数制限のためあまり詳しく掛けませんでした。不足な点があれば補足致しますので、
よろしくおねがいします。
No.3ベストアンサー
- 回答日時:
実際にやってみました。
同じテーブルを作成し、同じテストデータを作成して実験してみました。
結果、私のPCでは
+----+------+------+------+
| id | 1R | 2R | 3R |
+----+------+------+------+
| 1 | aa1 | NULL | N
|
| 2 | bb1 |
| NULL |
| 3 | cc1
| NULL | NULL |
+----+------+------+------+
3 rows in set
という風に3行表示され、変なところで改行(?)されてました。(なりませんでした?)
で、いろいろやってみたんですけど、
テストデータで改行文字に「\n」を使っていたり
改行文字の後に改行することで自動的に「\r\n」が付加されたために
このような現象が起こったのかなと思いました。
たとえば、テストデータを
「1 aa1 \N \Nxyz2 bb1 xyz3 cc1xyz」
と、1行で書いたり(このとき「xyz」は適当な改行文字とします。)、
「1 aa1 \N \N
2 bb1
3 cc1」
と「\n」を書かないで作成し、
> load data local infile "testdata" into table TABLE
> fields terminated by "\t"
> lines terminated by "xyz";
または、
> load data local infile "testdata" into table TABLE
> fields terminated by "\t"
> lines terminated by "\r\n";
としてみたらどうでしょうか?
それともこれだともともとの質問の趣旨からはずれてしまうでしょうか?
これだと
+----+------+------+------+
| id | 1R | 2R | 3R |
+----+------+------+------+
| 1 | aa1 | NULL | NULL |
+----+------+------+------+
| 2 | bb1 | | NULL |
+----+------+------+------+
| 3 | cc1 | NULL | NULL |
+----+------+------+------+
と、きれいに表示されましたので、まだましになったかなと思ったんですけど・・・・
2行目3列目のタブについては・・・・
「bb1」のあとにタブを入力したために、mysqlのほうで3列目のフィールドがある、というふうに勘違いして
スペースを作成したために、NULLではないものがはいったのかな~~?って考えてます。
どうでしょう??
後者の例で試してみたところ、綺麗にインポートできました!!
>という風に3行表示され、変なところで改行(?)され>てました。(なりませんでした?)
変な改行についても頭を悩ませていましたが、別問題だと思っていたのでこちらのほうには書いてませんでしたが、一緒に解決することができてうれしいです。
まだまだ初心者なもので、問題が発生するたびに混乱して、問題点の切り分けがうまくできてませんでした。
また質問させていただくことがあるかもしれませんがよろしくお願いします。_(._.)_
No.2
- 回答日時:
ごめんなさい。
また確認させてください。
一括登録するデータの「\n」「\N」って
ファイル内に目に見えるように記述されているんですよね?
つまり、1行目なら
1 aa1 \N \N\n
っていう文字列がテキストファイル内にそのまま記述されているんですよね?
改行の「\n」は、質問でわかりやすくするために
あえて記述した、ということはありませんよね?
この回答への補足
ファイル内に、\nと書いております。
その理由として・・・
列が(id,1R,2R,3R)と4列あるのですが、
id3の行のように2列分しか値を持たせていない行のために、明示的に\nと書きました。
再度、よろしくおねがいします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- PHP データベースを用いたwebページ 1 2022/12/27 20:12
- MySQL MYSQL エラー 2 2022/10/18 11:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
SQL Left Join で重複を排除す...
-
エラー 1068 (42000): 複数の主...
-
sqlで、600行あるテーブルを100...
-
select文のwhere句に配列を入れ...
-
SQLServerでのデータディクショ...
-
クエリ表示と、ADOで抽出したレ...
-
複数JOINしているとCOUNTが正し...
-
複数テーブルのGROUP BY の使い...
-
updateを1行ずつ実行したい。
-
mysqlのdeleteのサブクエリーで...
-
カラム名でseqとidではどちらが...
-
マイクラPC版のコマンドで効率...
-
MySQL SQL文 仮想カラムに番号...
-
SQLサーバから、項目の属性(型...
-
WordpressのContact form 7でzi...
-
primary(unique?) keyでwhereし...
-
VIEWの元のテーブルのindexって...
-
バインド変数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
select文のwhere句に配列を入れ...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLにて特定の文字を除いた検索...
-
【Transact-sql】 execの結果を...
-
マイクラPC版のコマンドで効率...
-
SQL Left Join で重複を排除す...
-
sqlで、600行あるテーブルを100...
-
複数テーブルのGROUP BY の使い...
-
WordpressのContact form 7でzi...
-
クエリ表示と、ADOで抽出したレ...
-
SQLサーバから、項目の属性(型...
-
selectした大量データをinsert...
-
Access パラメータクエリをcsv...
-
副問合せの書き方について
-
inner joinをすると数がおかし...
-
insertを高速化させたい
-
[MySQL] 3つのテーブルの結合で...
おすすめ情報