CSV ファイルから 20000 行のデータを Mysql にインポートしています。
CSV の列は、MySQL テーブルの列とは異なる順序になっています。Mysqlテーブルの列に対応する列を自動的に割り当てる方法は?
実行すると
LOAD DATA INFILE'abc.csv' INTO TABLE abc
このクエリは、すべてのデータを最初の列に追加します。
Mysql にデータをインポートするための自動構文を提案してください。
CSV ファイルから 20000 行のデータを Mysql にインポートしています。
CSV の列は、MySQL テーブルの列とは異なる順序になっています。Mysqlテーブルの列に対応する列を自動的に割り当てる方法は?
実行すると
LOAD DATA INFILE'abc.csv' INTO TABLE abc
このクエリは、すべてのデータを最初の列に追加します。
Mysql にデータをインポートするための自動構文を提案してください。
LOAD DATA INFILEコマンドを使用して、 csvファイルをテーブルにインポートできます。
このリンクMySQL - LOAD DATA INFILEを確認してください。
LOAD DATA LOCAL INFILE 'abc.csv' INTO TABLE abc
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(col1, col2, col3, col4, col5...);
MySQL 8.0 ユーザーの場合:
キーワードを使用LOCAL
するとセキュリティ リスクが保持され、MySQL 8.0 の時点では、このLOCAL
機能はFalse
デフォルトで に設定されています。次のエラーが表示される場合があります。
エラー 1148: 使用されたコマンドは、この MySQL バージョンでは許可されていません
docsの指示に従って上書きできます。このような上書きはセキュリティ上の問題を解決するものではなく、リスクを承知して喜んで引き受けることを認めるだけであることに注意してください。
おそらくFIELDS TERMINATED BY ','
区切り文字を設定する必要があります。
CSV ファイルの場合、ステートメントは次のようになります。
LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
ファイルをインポートする前に、次のものを準備する必要があります。
次の表があるとします。
次のクエリを使用してテーブルを作成します。
CREATE TABLE IF NOT EXISTS `survey` (
`projectId` bigint(20) NOT NULL,
`surveyId` bigint(20) NOT NULL,
`views` bigint(20) NOT NULL,
`dateTime` datetime NOT NULL
);
CSV ファイルは、例として適切にフォーマットする必要があります。次の添付画像を参照してください。
すべて問題がなければ..次のクエリを実行して LOAD DATA FROM CSV FILE を実行してください。
注:CSVファイルの絶対パスを追加してください
LOAD DATA INFILE '/var/www/csv/data.csv'
INTO TABLE survey
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
すべてが完了した場合。CSV からテーブルにデータを正常にエクスポートしました
構文:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE 'file_name' INTO TABLE `tbl_name`
CHARACTER SET [CHARACTER SET charset_name]
FIELDS [{FIELDS | COLUMNS}[TERMINATED BY 'string']]
[LINES[TERMINATED BY 'string']]
[IGNORE number {LINES | ROWS}]
この例を参照してください。
LOAD DATA LOCAL INFILE
'E:\\wamp\\tmp\\customer.csv' INTO TABLE `customer`
CHARACTER SET 'utf8'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
LOAD DATA LOCAL INFILE
Windows シェルから実行していOPTIONALLY ENCLOSED BY '"'
て、 を使用する必要がある場合、文字を適切にエスケープするには、次のようにする必要があります。
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql" -u root --password=%password% -e "LOAD DATA LOCAL INFILE '!file!' INTO TABLE !table! FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"^""' LINES TERMINATED BY '\n' IGNORE 1 LINES" --verbose --show-warnings > mysql_!fname!.out
csv またはテキスト ファイルからデータを読み込むことができます。テーブルのレコードを含むテキスト ファイルがある場合は、それらのレコードをテーブル内に読み込むことができます。たとえば、各行が各列の値を持つレコードであるテキスト ファイルがある場合、この方法でレコードを読み込むことができます。
id //field 1
name //field2
1,peter
2,daniel
...
--Windows での例
LOAD DATA LOCAL INFILE 'C:\\directory_example\\table.txt'
INTO TABLE Table
CHARACTER SET UTF8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';