如何阅读此文本文件并插入MySQL?

时间:2011-01-18 21:09:05

标签: mysql sql database text-files

样品

user id  User Name
   U456      Mathew 
   U457      Leon
   U458      Cris
   U459      Yancy
   U460      Jane

等等达500k。

我需要阅读这个文本文件并在两列中插入MySQL,例如用户ID和用户名。我如何在PHP中执行此操作?

5 个答案:

答案 0 :(得分:7)

LOAD DATA INFILE

示例:

注意:如果从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函数的工作原理。在这个任务中使用循环很容易。