私はmysqlにインポートしたいcsvファイルを持っています。mysql +列ヘッダーにスペースを含むファイルをインポートする+処理方法
私はLOAD DATA INFILEを使用しようとしていますが、まずテーブルを作成しなければなりません。これが私の問題です。
私はインポートしようとしていますfile.csvになり、このようになります(ただし、それだけでこの例では1列に「録音オープン日」があります):今、私はテーブル内の列ヘッダーを希望
をこれはcsvファイルと同じにすることができますが、私はこれをEG1とEG2で以下に示す "or"を使って動作させることはできません。 これを動作させる方法は、スペースをテーブルのアンダースコアつまり、 "Rec Open Date"は "Rec_Open_Date"になりますが、これはcsvファイルの列ヘッダー名を変更することになります。つまり、スペースをテーブルヘッダーの下線で置き換えてください。他の賢明な人にアドバイスする?理想的には私はcsvファイルの列見出しがデータテーブルの見出しと同じで、EG3がこれを実現する方法のようです。
EG1:私は、次の操作を行いますテーブルを作成EG3次
mysql> CREATE TABLE IF NOT EXISTS test1234 (
-> id int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
-> Rec_Open_Date Date NOT NULL COMMENT 'Rec Open Date',
-> PRIMARY KEY (id)
->) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='datatable demo table' AUTO_INCREMENT=64 ;
Query OK, 0 rows affected (0.00 sec)
mysql>
NOTE 、が、列:
mysql> CREATE TABLE IF NOT EXISTS test1234 (
-> id int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
-> 'Rec Open Date' Date NOT NULL COMMENT 'Rec Open Date',
-> PRIMARY KEY (id)
->) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='datatable demo table' AUTO_INCREMENT=64 ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Rec Open Date' Date NOT NULL COMMENT 'Rec Open Date',
PRIMARY KEY (id)
) ENGI' at line 3
mysql>
EG2
mysql> ^MCREATE TABLE IF NOT EXISTS test1234 (
-> id int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
-> "Rec Open Date" Date NOT NULL COMMENT 'Rec Open Date',
-> PRIMARY KEY (id)
->) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='datatable demo table' AUTO_INCREMENT=64 ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"Rec Open Date" Date NOT NULL COMMENT 'Rec Open Date',
PRIMARY KEY (id)
) ENGI' at line 3
mysql>
EG3ファイル内のヘッダーはsでなければなりません私はそれを理解しているように、datatable上のものとしてame。
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE test1234 COLUMNS TERMINATED BY ',';
TKSので、私は戻って使用することをjsutすることができますが、NOTはtest1234( IDはint(11)NOT NULL AUTO_INCREMENTコメントのプライマリキー '、 'レックオープンDate'日NOT NULLを存在する場合は、'のCREATE TABLE ''私のテーブルを作成するために、ダニCOMMENT = 'datatableデモテーブル' AUTO_INCREMENT = 64; '' ' – HattrickNZ
どのようにして' LOAD DATA LOCAL INFILE 'ファイルをロードしますか? head_test_1col.csv 'INTO TABLE test1234 COLUMNS TERMINATED BY'、 ';'またはこれは 'LOAD DATA LOCAL INFILE'です。head_test_1col.csv 'INTO TABLE test1234'は機能しません。テーブルにすべてゼロが入っています – HattrickNZ
"すべてゼロ"最初のフィールドのように、有効な数値ではありません。フィールド値が二重引用符で囲まれている場合LOAD DATAは、LOAD DATAステートメントに "OPTIONALLY ENCLOSED BY '"' "を含めると二重引用符を削除できます。MySQLは、日付フィールドがYYYY-MM-DDフォーマットであることを期待しています。 '@ udv2'のようなユーザ定義変数にフィールドをロードし、SET句の式を使用して値をDATEに変換することができます。たとえば、' \ 'Rec Open Date \' = STR_TO_DATE(@ udv2、 '%m/%d /%Y ') ' – spencer7593