127

CSV ファイルから 20000 行のデータを Mysql にインポートしています。

CSV の列は、MySQL テーブルの列とは異なる順序になっています。Mysqlテーブルの列に対応する列を自動的に割り当てる方法は?

実行すると

LOAD DATA INFILE'abc.csv' INTO TABLE abc

このクエリは、すべてのデータを最初の列に追加します。

Mysql にデータをインポートするための自動構文を提案してください。

4

11 に答える 11

206

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の指示に従って上書きできます。このような上書きはセキュリティ上の問題を解決するものではなく、リスクを承知して喜んで引き受けることを認めるだけであることに注意してください。

于 2013-01-03T05:52:52.070 に答える
59

おそらく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;
于 2013-01-03T05:14:36.867 に答える
53

ファイルをインポートする前に、次のものを準備する必要があります。

  • ファイルからのデータがインポートされるデータベース テーブル。
  • テーブルの列数と各列のデータ型に一致するデータを含む CSV ファイル。
  • MySQL データベース サーバーに接続するアカウントには、FILE および INSERT 権限があります。

次の表があるとします。

ここに画像の説明を入力

次のクエリを使用してテーブルを作成します。

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 からテーブルにデータを正常にエクスポートしました

于 2015-09-16T09:49:19.530 に答える
17

構文:

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;
于 2016-10-20T13:14:26.983 に答える
2

LOAD DATA LOCAL INFILEWindows シェルから実行してい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
于 2016-10-06T23:13:20.523 に答える
0

csv またはテキスト ファイルからデータを読み込むことができます。テーブルのレコードを含むテキスト ファイルがある場合は、それらのレコードをテーブル内に読み込むことができます。たとえば、各行が各列の値を持つレコードであるテキスト ファイルがある場合、この方法でレコードを読み込むことができます。

テーブル.sql

id //field 1

name //field2

table.txt

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'; 
于 2016-10-06T03:09:44.933 に答える