lcm*_*lcm 94 mysql csv import load-data-infile database-table
将csv文件上传到mysql表的最佳/最快方法是什么?我想将第一行数据用作列名.
发现这个:
但唯一的答案是使用GUI而不是shell?
hjp*_*r92 146
您可以直接将MYSQL链接到它并使用以下SQL语法上载信息,而不是编写脚本以从CSV文件中提取信息.
要将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)
Run Code Online (Sandbox Code Playgroud)
正如读取:将CSV文件直接导入MySQL
对于您的情况,您需要先编写一个解释器,以查找第一行,并将它们指定为列名.
来自MySQL文档的LOAD DATA
语法:
该
IGNORE number LINES
选项可用于忽略文件开头的行.例如,您可以使用IGNORE 1 LINES
跳过包含列名的初始标题行:Run Code Online (Sandbox Code Playgroud)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)
Run Code Online (Sandbox Code Playgroud)
Haw*_*kee 22
这是一个简单的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);
?>
Run Code Online (Sandbox Code Playgroud)
它将基于第一行创建一个表,并将剩余的行导入其中.这是命令行语法:
php csv_import.php csv_file.csv table_name
Run Code Online (Sandbox Code Playgroud)
如果您有能力安装 phpadmin 有一个导入部分,您可以在其中将 csv 文件导入到您的数据库,甚至还有一个复选框可以将标题设置为包含表列名称的文件的第一行(如果未选中,则第一行将成为数据的一部分