99

CSV ファイルを MySQL テーブルにインポートするにはどうすればよいですか? データの最初の行を列名として使用したいと思います。

CSV ファイルを MySQL テーブルにインポートするにはどうすればよいですか?を読みました。、しかし唯一の答えは、シェルではなくGUIを使用することでしたか?

4

13 に答える 13

150

CSV ファイルから情報を取得するスクリプトを作成する代わりに、MYSQL を直接リンクし、次の SQL 構文を使用して情報をアップロードできます。

Excel ファイルを MySQL にインポートするには、まず CSV ファイルとしてエクスポートします。生成された CSV ファイルから CSV ヘッダーを削除し、Excel が CSV ファイルの末尾に配置した可能性のある空のデータも削除します。

次に、次を実行して、MySQL テーブルにインポートできます。

load data local infile 'uniq.csv' into table tblUniq fields terminated by ','
  enclosed by '"'
  lines terminated by '\n'
    (uniqName, uniqCity, uniqComments)

続きを読む: CSV ファイルを MySQL に直接インポートする

編集

あなたの場合、最初の行を見つけて列名として割り当てるために、最初にインタープリターを作成する必要があります。


編集-2

構文に関するLOAD DATAMySQLドキュメントから:

このIGNORE number LINESオプションを使用して、ファイルの先頭にある行を無視できます。たとえば、IGNORE 1 LINES列名を含む最初のヘッダー行をスキップするために使用できます。

LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test IGNORE 1 LINES;

したがって、次のステートメントを使用できます。

LOAD DATA LOCAL INFILE 'uniq.csv'
INTO TABLE tblUniq
FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(uniqName, uniqCity, uniqComments)
于 2012-06-18T06:38:38.197 に答える
26

必要なことを実行する単純な PHP コマンド ライン スクリプトを次に示します。

<?php

$host = 'localhost';
$user = 'root';
$pass = '';
$database = 'database';

$db = mysql_connect($host, $user, $pass);
mysql_query("use $database", $db);

/********************************************************************************/
// Parameters: filename.csv table_name

$argv = $_SERVER[argv];

if($argv[1]) { $file = $argv[1]; }
else {
    echo "Please provide a file name\n"; exit; 
}
if($argv[2]) { $table = $argv[2]; }
else {
    $table = pathinfo($file);
    $table = $table['filename'];
}

/********************************************************************************/
// Get the first row to create the column headings

$fp = fopen($file, 'r');
$frow = fgetcsv($fp);

foreach($frow as $column) {
    if($columns) $columns .= ', ';
    $columns .= "`$column` varchar(250)";
}

$create = "create table if not exists $table ($columns);";
mysql_query($create, $db);

/********************************************************************************/
// Import the data into the newly created table.

$file = $_SERVER['PWD'].'/'.$file;
$q = "load data infile '$file' into table $table fields terminated by ',' ignore 1 lines";
mysql_query($q, $db);

?>

最初の行に基づいてテーブルを作成し、残りの行をそこにインポートします。コマンドライン構文は次のとおりです。

php csv_import.php csv_file.csv table_name
于 2013-01-28T15:34:40.310 に答える
5

phpadmin をインストールできる場合は、csv ファイルをデータベースにインポートできるインポート セクションがあり、ヘッダーをファイルの最初の行に設定するチェックボックスがあり、テーブルの列名が含まれています (これがチェックされていない場合、最初の行はデータの一部になります

于 2014-06-02T16:07:26.060 に答える
3

最初に、csv ファイルにあるのと同じ数の列を持つテーブルをデータベースに作成します。

次に、次のクエリを使用します

LOAD DATA INFILE 'D:/Projects/testImport.csv' INTO TABLE cardinfo
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
于 2013-07-04T06:34:44.127 に答える
3

「mysql -u -p --local-infile」として mysql を起動すると、正常に動作します。

于 2015-10-05T13:34:23.020 に答える