样品
user id User Name
U456 Mathew
U457 Leon
U458 Cris
U459 Yancy
U460 Jane
等等达500k。
我需要阅读这个文本文件并在两列中插入MySQL,例如用户ID和用户名。我如何在PHP中执行此操作?
答案 0 :(得分:7)
示例:
注意:如果从Windows运行此命令,则需要转义文件路径中的正斜杠。
实施例
C:\\path\to\file.txt
看起来像:
C:\\\\path\\to\\file.txt
以下是查询:
LOAD DATA INFILE '/path/to/sample.txt'
INTO TABLE `database_name`.`table_name`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(
user_id, user_name
)
答案 1 :(得分:3)
删除第一行并使用此命令
LOAD DATA INFILE 'C:\\sample.txt'
INTO TABLE Users
FIELDS TERMINATED BY ' '
LINES TERMINATED BY '\r\n';
有关更多信息,请访问 http://tech-gupshup.blogspot.com/2010/04/loading-data-in-mysql-table-from-text.html
答案 2 :(得分:2)
使用PHP,可能与此类似:
$file = "/path/to/text/file.txt";
$fp = fopen($file, "r");
$data = fread($fp, filesize($file));
fclose($fp);
以上将文本文件读入变量
$output = explode("\n", $output);
foreach($output as $var) {
$tmp = explode("|", $var);
$userId = $tmp[0];
$userName = $tmp[1];
告诉它在每个Endline爆炸,然后将数据存储在临时变量
中$sql = "INSERT INTO table SET userId='$userId', userName='$userName'";
mysql_query($sql);
执行每行的查询
答案 3 :(得分:0)
取决于。如果使用TAB字符分隔两个字段,则fgetcsv($f,1000,"\t")
将在每行中读取。否则,请使用substr()
,如果它是固定宽度的列文本文件,则拆分字段(最终应用trim()
)。
遍历行和字段,并使用您选择的数据库界面:
db("INSERT INTO tbl (user_id, user_name) VALUES (?,?)", $row);
答案 4 :(得分:0)
使用PHP的fopen函数来访问和读取文件..从那里开始,其余部分非常简单。逐行读取文件并将值插入数据库。
http://us3.php.net/manual/en/function.fopen.php
上面的链接非常好地描述了fopen函数的工作原理。在这个任务中使用循环很容易。