Php 仅在某些行之间将csv导入mysql
我有一个csv,其中包含我需要加载到不同mysql表中的一系列信息,有没有其他方法可以做到这一点 表1的数据将位于第1行和第10行之间的csv顶部,数据标题位于A列,数据标题位于B列,如下所示: 标题、数据 标题、数据 下面是表2的数据,如下所示: 标题,标题,标题,标题 数据,数据,数据,数据 数据,数据,数据,数据 数据,数据,数据,数据 有什么想法吗Php 仅在某些行之间将csv导入mysql,php,mysql,csv,Php,Mysql,Csv,我有一个csv,其中包含我需要加载到不同mysql表中的一系列信息,有没有其他方法可以做到这一点 表1的数据将位于第1行和第10行之间的csv顶部,数据标题位于A列,数据标题位于B列,如下所示: 标题、数据 标题、数据 下面是表2的数据,如下所示: 标题,标题,标题,标题 数据,数据,数据,数据 数据,数据,数据,数据 数据,数据,数据,数据 有什么想法吗 谢谢您可以在单独的文件中分离数据,然后使用mysqlimport 如果你对此没有信心,那么你可以使用。它有CSV导入功能 您可以创建一个临时
谢谢您可以在单独的文件中分离数据,然后使用mysqlimport
如果你对此没有信心,那么你可以使用。它有CSV导入功能 您可以创建一个临时表,将csv中的所有数据加载到此临时表中,然后根据临时表中的键(例如,行)将数据添加到您的表中
CREATE TEMPORARY TABLE tmp
(
line int AUTO_INCREMENT PRIMARY KEY,
field1 varchar(255),
field2 varchar(255),
field3 varchar(255)
);
像这样的
创建临时表
CREATE TEMPORARY TABLE tmp
(
line int AUTO_INCREMENT PRIMARY KEY,
field1 varchar(255),
field2 varchar(255),
field3 varchar(255)
);
加载数据
LOAD DATA LOCAL INFILE 'file.txt' INTO TABLE tmp
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(@field1, @field2, @field3)
SET field1 = @field1,
field2 = @field2,
field3 = @field3;
因此,如果您想将第5行到第10行的数据插入到表1中
INSERT INTO table1
SELECT field1, field2, field3
FROM tmp
WHERE line >= 5 AND line <= 10
如果您知道需要更改表的行数,可以执行以下操作(源php.net):
如果您可以使用命令行,为什么不跳过PHP,将不同的表数据分解到它们自己的文件中,并使用
mysqlimport
?您已经收到了多个答案,其中有人帮过您吗?
...
$table_one_data = array();
$table_two_data = array();
$row = 0;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$row++
if ($row < 1000) {
array_push($table_one_data, $data);
} else {
array_push($table_two_data, $data);
}
}
fclose($handle);
}
....
...
$table_one_data = array();
$table_two_data = array();
$field = 0;
$trigger = "table2";
$tableChange = false;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($data[field] == $trigger) {
tableChange = true;
}
if (!$tableChange) {
array_push($table_one_data, $data);
} else {
array_push($table_two_data, $data);
}
}
fclose($handle);
}
....