• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:load dataするときに、最後の列(文字列)がちゃんと入らない)

load dataで最後の列の登録ができない問題について

このQ&Aのポイント
  • load dataで最後の列に空白またはnullを指定しても登録されない問題が発生しています。
  • 具体的なデータ登録の例を示し、登録結果を報告しています。
  • 空白やnullが正しく登録されない原因や対策について検討しています。

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

  • ベストアンサー
  • ma-chan45
  • ベストアンサー率31% (46/145)
回答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ではないものがはいったのかな~~?って考えてます。 どうでしょう??

moritaka6280
質問者

お礼

後者の例で試してみたところ、綺麗にインポートできました!! >という風に3行表示され、変なところで改行(?)され>てました。(なりませんでした?) 変な改行についても頭を悩ませていましたが、別問題だと思っていたのでこちらのほうには書いてませんでしたが、一緒に解決することができてうれしいです。 まだまだ初心者なもので、問題が発生するたびに混乱して、問題点の切り分けがうまくできてませんでした。 また質問させていただくことがあるかもしれませんがよろしくお願いします。_(._.)_

その他の回答 (2)

  • ma-chan45
  • ベストアンサー率31% (46/145)
回答No.2

ごめんなさい。 また確認させてください。 一括登録するデータの「\n」「\N」って ファイル内に目に見えるように記述されているんですよね? つまり、1行目なら 1 aa1 \N \N\n っていう文字列がテキストファイル内にそのまま記述されているんですよね? 改行の「\n」は、質問でわかりやすくするために あえて記述した、ということはありませんよね?

moritaka6280
質問者

補足

ファイル内に、\nと書いております。 その理由として・・・ 列が(id,1R,2R,3R)と4列あるのですが、 id3の行のように2列分しか値を持たせていない行のために、明示的に\nと書きました。 再度、よろしくおねがいします。

  • ma-chan45
  • ベストアンサー率31% (46/145)
回答No.1

こんにちは。 実行したコマンド(load data infileの後の部分も含めて) 教えてもらえますか?

moritaka6280
質問者

補足

load data local infile "c:/ファイル名.txt" into table TABLE名 fields terminated by '\t' lines terminated by '\n'; です。よろしくおねがいします。

関連するQ&A