0

データベースの mysql テーブルに csv をインポートしようとしていますが、次のエラーが発生し続けます。

「フィールド リスト」の不明な列「」

INSERT INTO `job_budget_report` (`Job_Num`, `Description`, `EngWeekly`, `EngTTD`, `EngBudget`, `DesignWeekly`, `DesignTTD`, `DesignBudget`, `DetailsWeekly`, `DetailsTTD`, `DetailsBudget`, `EjectionWeekly`, `EjectionTTD`, `EjectionBudget`, `CarbonEDMWeekly`, `CarbonEDMTTD`, `CarbonEDMBudget`, `GdrillBMWeekly`, `GdrillBMTTD`, `GdrillBMBudget`, `CNCWeekly`, `CNCTTD`, `CNCBudget`, `MMQCOtherWeekly`, `MMQCOtherTTD`, `MMQCOtherBudget`, `SpottingWeekly`, `SpottingTTD`, `SpottingBudget`, `SpotPLWeekly`, `SpotPLTTD`, `SpotPLBudget`, `HWWeekly`, `HWTTD`, `HWBudget`, `TotalMach`, `TotalOther`, `TotalOFMach`, ``) VALUES
('1000', 'description text here', '0', '0', '0', NULL, '0', '0', NULL, NULL, '0', NULL, '0', NULL, '0', '0', '0', '0', '0', '0', '0', '0', '0', '20.5', '0', '0', '0', '0', '0', '18.5', '40', '0', '0', '0', '0', '0', '0', '0', '');

テーブル構造:

http://imgur.com/rFLw4c7

そのクエリに余分な空のフィールドがあることに気付きましたが、csv からそれらを削除するにはどうすればよいですか?

崇高なテキストで開くと、csv は次のようになります。

Job_Num;Description;EngWeekly;EngTTD;EngBudget;DesignWeekly;DesignTTD;DesignBudget;DetailsWeekly;DetailsTTD;DetailsBudget;EjectionWeekly;EjectionTTD;EjectionBudget;CarbonEDMWeekly;CarbonEDMTTD;CarbonEDMBudget;GdrillBMWeekly;GdrillBMTTD;GdrillBMBudget;CNCWeekly;CNCTTD;CNCBudget;MMQCOtherWeekly;MMQCOtherTTD; MMQCOtherBudget;SpottingWeekly;SpottingTTD;SpottingBudget;SpotPLWeekly;SpotPLTTD;SpotPLBudget;HWWeekly;HWTTD;HWBudget;TotalMach;TotalOther;TotalOFMach 5710;GM K2XL ブラケット FRT 5/D ベルト R;0;0;0;;0;0;;; 0;;0;;0;0;0;0;0;0;0;0;0;20.5;0;0;0;0;0;18.5;40;0;0;0;0;0; 0;0;0;0;457.56;328.8;;;;;

申し訳ありませんが、これをより適切に構成する方法がわかりません。書式設定をクリアする前後に、Excel ファイルの行の 1 つの画像を投稿します。

前: http://imgur.com/f6jRBZR

変更後: http://imgur.com/M1mQb8V

これを行うためのより効率的な方法はありますか?

4

2 に答える 2

1

fgetcsv()読み取り、クリーンアップ、およびテーブルへの挿入に使用します。- http://www.php.net/fgetcsv

$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
     while (($data = fgetcsv($handle, 10000, ";")) !== FALSE) {
         $num = count($data);
         echo "<p> $num fields in line $row: <br /></p>\n";
         $row++;
         for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
         } 
     }
     fclose($handle);
}
于 2014-02-03T13:15:33.093 に答える
1
INSERT INTO `job_budget_report` 
     ( `Job_Num`
     , `Description`
     , `EngWeekly`
     , `EngTTD`
     , `EngBudget`
     , `DesignWeekly`
     , `DesignTTD`
     , `DesignBudget`
     , `DetailsWeekly`
     , `DetailsTTD`
     , `DetailsBudget`
     , `EjectionWeekly`
     , `EjectionTTD`
     , `EjectionBudget`
     , `CarbonEDMWeekly`
     , `CarbonEDMTTD`
     , `CarbonEDMBudget`
     , `GdrillBMWeekly`
     , `GdrillBMTTD`
     , `GdrillBMBudget`
     , `CNCWeekly`
     , `CNCTTD`
     , `CNCBudget`
     , `MMQCOtherWeekly`
     , `MMQCOtherTTD`
     , `MMQCOtherBudget`
     , `SpottingWeekly`
     , `SpottingTTD`
     , `SpottingBudget`
     , `SpotPLWeekly`
     , `SpotPLTTD`
     , `SpotPLBudget`
     , `HWWeekly`
     , `HWTTD`
     , `HWBudget`
     , `TotalMach`
     , `TotalOther`
     , `TotalOFMach`
     , `` -- clearly, this is the offending line!
     ) VALUES 
     ('1000'
     , 'description text here'
     , '0'
     , '0'
     , '0'
     , NULL
     , '0'
     , '0'
     , NULL
     , NULL
     , '0'
     , NULL
     , '0'
     , NULL
     , '0'
     , '0'
     , '0'
     , '0'
     , '0'
     , '0'
     , '0'
     , '0'
     , '0'
     , '20.5'
     , '0'
     , '0'
     , '0'
     , '0'
     , '0'
     , '18.5'
     , '40'
     , '0'
     , '0'
     , '0'
     , '0'
     , '0'
     , '0'
     , '0'
     , ''); -- and its corresponding value
于 2014-02-03T13:12:06.647 に答える