
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
CAKEPHP current_timestamp
-
日またぎの計算
-
csvをDBへ読み込んだら、NULLが...
-
テーブルの最後のレコードしか...
-
SQL文が実行できません
-
ExcelVBAでAccessのデータを検...
-
JAVA SQLServerException 列名 ...
-
PHPで絞り込み検索結果の件数を...
-
アラートでyes noを作りたいです。
-
PHP+SQLite でSELECT文のWHERE...
-
PHPからSQLite3のUPDATEができ...
-
時刻型にNULLでセットしたい
-
DBでAUTO_INCREMENTのフィール...
-
mysql_field_lenの返り値がvarc...
-
sendmailの$bodyの中にwhile文
-
DBで検索結果に該当するデータ...
-
Pro*Cの構文エラー
-
ボタンのonclick時における関数...
-
phpでmysqlを使ってデータベー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
csvをDBへ読み込んだら、NULLが...
-
変数にNULLを代入したい
-
カラムにデータがあるかないか...
-
ヒアドキュメントでSQLを書く事...
-
3つのテーブルを結合したSELECT文
-
MYSQLのレコードの数を表示した...
-
PHPでPostgreSQLのテーブルを表...
-
php sqlite count 列数取得
-
クエリObjectをforeachで回す時...
-
OracleからAccessへのインポート
-
PHP PDOを利用してカラムの削除...
-
DB Error: no such field
-
テーブルを使用してレイアウト...
-
PHPシステムでSQLのUPDATEがあ...
-
テーブルのカラムの属性を変え...
-
重複データをカウントするのに...
-
変数を組み入れたい
-
phpでテーブルを作る際変数によ...
-
phpの掲示板でレスがあったスレ...
おすすめ情報