2012-09-07 124 views
7

HeidiSQLを使用してcsvファイルをMySQLデータベースにインポートします。HeidiSQL import csv空欄

しかし、私のフィールドのいくつかは空です。

HeidiSQLにこれらの空の値がNULL値と見なされる必要があることを知らせるために、私は何ができますか? (最後の2つのフィールドがまだ知られていない)、CSVファイルの

サンプル:

NULL;Students Corner;437452182;; 

作成するコマンドは:

Incorrect integer value: '' for column 'company_id' at row 1 */ 
    Incorrect integer value: '' for column 'company_vat' at row 1 */ 
    Incorrect integer value: '' for column 'company_zip' at row 1 */ 
    etc 
+0

投稿するには、CSVからテーブルとサンプル行を作成する – rkosegi

+1

SET節を使用してLOAD DATA INFILEコマンドを実行すると、空の文字列をNULL値に置き換えることができます。 – Devart

+0

;置換; by; NULL;あなたのCSVで再試行してください。 –

答えて

7

NULLを書き込む代わりに、空の各フィールドに\ Nを書き込んで解決すれば!

+1

それは良いです。それがあなたが使ったものなら、あなたの答えを受け入れることを忘れないでください。私はまだそれをインポートする前にCSVファイルを前処理するオプションを持っていないので、 'LOAD DATA INFILE'クエリソリューションがより良いと言いたいと思います。クエリを書くことで、すべてのロジックを単一のスクリプトにまとめることができます。これは、次回は単一のコマンドとして実行するだけで、ファイルの内容をチェックする心配はありません。 – SDC

+0

はい、あなたは絶対に正しいです!助けてくれてありがとう! – francisMi

+1

うわー、この答えは人生全体です!私は巨大なCSVファイル(200k行と34列)をインポートしようとしていましたが、NULL値についてのエラーと警告を私に投げかけてしまったのです。 'NULL'の代わりに' \ N'を使うか、空白のフィールドだけを使って魔法を使ったようです! :) – Terry

5

あなたがインポートすることができます。

CREATE TABLE `db`.`customers` (
     `company_id` INT NOT NULL AUTO_INCREMENT , 
     `company_name` VARCHAR(40) NULL , 
     `company_number` INT NULL , 
     `company_vat` INT NULL , 
     `company_zip` INT NULL, 
    PRIMARY KEY (`company_id`)); 

私はこれらのエラーを取得しますLOAD DATA INFILEクエリを使用してCSVファイルをMySQLにインポートします。あなたのケースでは

、あなたはこのような何かを記述します。

LOAD DATA INFILE filename.txt 
INTO TABLE customers 
FIELDS TERMINATED BY ';' 
LINES TERMINATED BY '\n' 
(@id, @name, @number, @vat, @zip) 
SET 
    company_id  = (CASE WHEN @id='' THEN NULL ELSE @id END), 
    company_name = (CASE WHEN @name='' THEN NULL ELSE @name END), 
    company_number = (CASE WHEN @number='' THEN NULL ELSE @number END), 
    company_vat = (CASE WHEN @vat='' THEN NULL ELSE @vat END), 
    company_zip = (CASE WHEN @zip='' THEN NULL ELSE @zip END) 

(あなたは、などのラインマーカー、あなたの終わりに応じて、これを調整する必要があるかもしれませんが、これは何が必要にかなり近いはず)