20000行のデータをCSVファイルからMysqlにインポートしています。
CSVの列は、MySQLテーブルの列とは異なる順序になっています。Mysqlテーブルの列に対応する列を自動的に割り当てる方法は?
実行すると
LOAD DATA INFILE'abc.csv' INTO TABLE abc
このクエリは、すべてのデータを最初の列に追加します。
Mysqlにデータをインポートするための自動構文を提案してください。
20000行のデータをCSVファイルから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
キーワードholdセキュリティリスクを使用すると、MySQL 8.0以降、このLOCAL
機能はFalse
デフォルトで設定されています。次のエラーが表示される場合があります。
エラー1148:使用されたコマンドはこのMySQLバージョンでは許可されていません
docsの指示に従って上書きすることができます。このような上書きはセキュリティの問題を解決するのではなく、リスクを承知していて喜んで受け入れることを承認するだけであることに注意してください。
IGNORE 1 LINES
ここで正確には何がわかりますか?前もって感謝します。
おそらく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ファイルは、添付された画像を次の例に示すように適切にフォーマットする必要があります。
すべてが問題ない場合は、次のクエリを実行してCSVファイルからデータをロードしてください。
注: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;
データベースに1分間で7000000を超える大量のレコードを挿入(計算を含む超高速クエリ)
mysqli_query($cons, '
LOAD DATA LOCAL INFILE "'.$file.'"
INTO TABLE tablename
FIELDS TERMINATED by \',\'
LINES TERMINATED BY \'\n\'
IGNORE 1 LINES
(isbn10,isbn13,price,discount,free_stock,report,report_date)
SET RRP = IF(discount = 0.00,price-price * 45/100,IF(discount = 0.01,price,IF(discount != 0.00,price-price * discount/100,@RRP))),
RRP_nl = RRP * 1.44 + 8,
RRP_bl = RRP * 1.44 + 8,
ID = NULL
');
$affected = (int) (mysqli_affected_rows($cons))-1;
$log->lwrite('Inventory.CSV to database:'. $affected.' record inserted successfully.');
RRPとRRP_nlとRRP_blはcsvにありませんが、それを計算してから挿入しました。
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
xamppとphpmyadminを使用しているとしましょう
ファイル名は「ratings.txt」、テーブル名は「ratings」、データベース名は「movies」です。
xamppが「C:\ xampp \」にインストールされている場合
「ratings.txt」ファイルを「C:\ xampp \ mysql \ data \ movies」フォルダにコピーします
LOAD DATA INFILE 'ratings.txt' INTO TABLE ratings FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;
これがローカルホストでこれを行っている場合、エラーを省略するのに役立つことを願っています
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';
エラーコード1290が表示されていました。MySQLサーバーは--secure-file-privオプションで実行されているため、このステートメントを実行できません
これは、wampserver 3.0.6 64ビットを使用するWindows 8.1 64ビットで私にとってはうまくいきました。
C:\ wamp64 \ bin \ mysql \ mysql5.7.14からmy.iniファイルを編集
エントリsecure_file_priv c:\ wamp64 \ tmp \(またはここにある任意のディレクトリ)を削除します
すべてを停止し、ワンプなどを終了し、すべてを再起動しました。次に、C:\ wamp64 \ bin \ mysql \ mysql5.7.14 \ data \ u242349266_recur(最後のディレクトリは私のデータベース名です)にあるcvsファイルをパントします
LOAD DATA INFILE 'myfile.csv'を実行しました
INTO TABLE卒業生
「、」で終了するフィールド
「」で囲まれています
'\ r \ n'で終了する行
1行を無視
...そしてVOILA !!!
これらの日によって私はのようなツールを使用することを好む(2019年決算)http://www.convertcsv.com/csv-to-sql.htm 私はあなたが行の多くを持って、あなたがから来CSVときに、ユーザーのミスを保存するパーティションのブロックを実行することができます最終的なユーザースプレッドシート。