csvファイルをMySQLへ読み込んだら、空白のところが勝手に0に置き換わってしまいました。
置き換わったカラムの型が、全部INTだったので、
試しにVARCHARへ変え、再度、取り込み処理を実施してみたところ、
希望通りに(空白のところは空白のままで)無事データを取り込むことが出来ました。
■質問1
考えられる原因としては、DBの設定?
それとも、PHP側の書き方でしょうか?
■質問2
データ型を決める際、数字はINT、文字列はVARCHAR、ぐらいの認識しかないのですが、
今回のように、INT型のカラムを、VARCHAR型に、変えたりすると、
起こり得るリスクとしては、どのようなものが考えられでしょうか?
■質問3
DBのデータ型が、「INT」と「VARCHAR」では、PHP側の書き方も変わってくるのでしょうか?
□PHPの内容
▽まず、UTF-8形式で上書き
exec("nkf -w --overwrite data.csv");
▽接続後読み込み
$sql = "LOAD DATA LOCAL INFILE '$file' INTO TABLE `読み込むテーブルの名前` FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\\\' LINES TERMINATED BY '\\r\\n'";
No.2ベストアンサー
- 回答日時:
>考えられる原因としては、DBの設定?
>それとも、PHP側の書き方でしょうか?
入力するcsvファイルの作成の仕方に、問題があります。
NULLで格納するには、入力ファイルの該当カラム位置に、\Nを入れておく必要があります。
例えば、次のような入力ファイルだったとします。
xxx,,yyyyy
xxxxx,100,y
xx,\N,yy
1レコード目の2番目のフィールドは値が入っていませんが、この場合の扱いは次のようになります。
列のデータ型が文字・・・長さ0の文字。すなわちnullではない。
列のデータ型が数値・・・0。すなわちnullではない。
>今回のように、INT型のカラムを、VARCHAR型に、変えたりすると、
>起こり得るリスクとしては、どのようなものが考えられでしょうか?
数値以外のデータが入る可能性がありますが、それが実害が出るかどうかは、その列がどういう意味のものか次第です。
(1)在庫数など数値演算するような列
(2)商品コード、注文番号、フラグなどの列
といったことで話は違ってきます。
参考URL:http://dev.mysql.com/doc/refman/5.1/ja/load-data …
回答ありがとうございました。
>列のデータ型が文字・・・長さ0の文字。すなわちnullではない。
>列のデータ型が数値・・・0。すなわちnullではない。
など、説明、大変分かりやすかったです。
>実害が出るかどうかは、その列がどういう意味のものか次第
>(1)在庫数など数値演算するような列
>(2)商品コード、注文番号、フラグなどの列
こちらもありがとうございました。
言われてみれば、確かにそのとおりですね。
おかげで頭の中を整理することができましたー。
No.1
- 回答日時:
空文字はNULLではありません
区切り記号を「;」、囲み記号を「"」として
NULL値がOKでデフォルトがNULLのINT型フィールドにデータ投入するとき
""は0ですね。どうしてもNULLを投入したいならNULLと書いてください。
たとえば・・・
"100";"1000"
"200";""
"300";"0"
"400";NULL
200と300の行はともに0です。
処理としてはエディタかなにかで""をNULLに一括変換してから
投入すればいいでしょう。
回答ありがとうございました。
>空文字はNULLではありません
>囲み記号を「"」としてNULL値がOKでデフォルトがNULLのINT型フィールドにデータ投入するとき""は0ですね。
全然知りませんでした。
勉強になりましたー
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php エラー 2 2022/10/23 16:43
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
いけず言葉しりとり
はんなりと心にダメージを与える「いけず言葉」でしりとりをしましょう。 「あ」あら〜しゃれた服着てはりますな 遠くからでもわかりましたわ
-
タイムマシーンがあったら、過去と未来どちらに行く?
20XX年、ついにタイムマシーンが開発されました。 あなたは過去に行く? それとも未来? タイムマシーンにのって、どこに行って、何をしたいか教えてください!
-
エクセルでCSVを編集するとき、空白(NULL?)はどう入れますか
Excel(エクセル)
-
データベースのINT型項目にNULLはNG?
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
変数にNULLを代入したい
-
php sqlite count 列数取得
-
PHP PDOを利用してカラムの削除...
-
phpにて出欠登録管理を作成して...
-
OracleからAccessへのインポート
-
csvをDBへ読み込んだら、NULLが...
-
insert1つの処理でもトランザ...
-
実行時エラー3131 FROM 句の構...
-
Pro*Cの構文エラー
-
【ASP.NET】MySQLのテーブルレ...
-
テキストボックスに入れた内容...
-
php MySQL で、更新ボタンを押...
-
PHP 関数呼び出し後に配列添字...
-
phpでmysqlを使ってデータベー...
-
Accessのテーブルへ複数の主キ...
-
SELECT文を発行して、ACCESSよ...
-
mysql_fetch_array の関数について
-
stringaddslashes 半角¥が消える
-
セッションを使ったログインペ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
csvをDBへ読み込んだら、NULLが...
-
変数にNULLを代入したい
-
phpにて出欠登録管理を作成して...
-
OracleからAccessへのインポート
-
php sqlite count 列数取得
-
DB Error: no such field
-
日またぎの計算
-
SQLiteでDBに書き込みできません
-
出勤表の作り方
-
Accessへ日付をINSERT
-
PHPとMySQLを使った検索システ...
-
テーブルの数
-
結合したテーブルの特定カラム...
-
PHPでmySQLのテーブルを作成したい
-
PHP データの抽出&相関検定の...
-
SQLで返り値が空とでる
-
【PHPとDBの連動】時刻表作成
-
メニューの階層について
-
phpでテーブルを作る際変数によ...
おすすめ情報