使用:分隔符将文件导入MySQL数据库

使用:分隔符将文件导入MySQL数据库,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我有多个TXT文件,其中包含以下格式的列: id:category:topic:date 他们都排成一排。i、 e 1:类别:主题:日期 2:类别:主题:日期 3:类别:主题:日期 是否可以使用PHPMyAdmin将此文件导入myMySQL数据库? 在“导入”选项卡上,可以上载CSV文件。上载文件,选择“CSV”格式,然后设置: 用以下符号分隔的列:: 包含以下内容的列:(空) 使用PHP 您可以编写一个小型PHP程序来实现这一点。首先,读入文件: $fh = fopen('the-file

我有多个
TXT
文件,其中包含以下格式的列:

id:category:topic:date

他们都排成一排。i、 e

1:类别:主题:日期

2:类别:主题:日期

3:类别:主题:日期

是否可以使用PHPMyAdmin将此文件导入my
MySQL
数据库?

在“导入”选项卡上,可以上载CSV文件。上载文件,选择“CSV”格式,然后设置:

  • 用以下符号分隔的列:
  • 包含以下内容的列:(空)
使用PHP 您可以编写一个小型PHP程序来实现这一点。首先,读入文件:

$fh = fopen('the-file.txt', 'r');
现在,
$fh
是读取-file.txt的处理程序。现在我们可以使用
fgetcsv()

$data
是记录中所有数据的数组


PDO示例和准备好的语句:

// prepare the statement to insert a new record
$stmt = $pdo->prepare("INSERT INTO `some_table` (`id`, `category`, `topic`, `date`) VALUES (?, ?, ?, ?)");
// read the file
$fh = fopen('the-file.txt', 'r');
while (($data = fgetcsv($fh, 1000, ':', '')) !== false) {
    $stmt->execute($data);
}
这将假定列名为“id”、“category”、“topic”和“date”


数字
1000
是最大行长度。您可以将其设置为0,没有最大长度,但这稍微慢一点。有关详细信息,请参阅。

是的,这是可能的。@RasmusBoie mind sharing?MySQL允许您指定分隔符,而不是使用更快的方法,即
phpmyadmin
?我们谈论的是超过10万行..@Removed啊,我很困惑,因为你使用了'php'标记。我修改了答案。为什么不用一个
delimiter@MarkBaker我不知道函数存在,谢谢。@CamilStaps我得到错误“CSV导入的参数无效:列转义为”我应该使用
,即使它们不是这样转义的?
// prepare the statement to insert a new record
$stmt = $pdo->prepare("INSERT INTO `some_table` (`id`, `category`, `topic`, `date`) VALUES (?, ?, ?, ?)");
// read the file
$fh = fopen('the-file.txt', 'r');
while (($data = fgetcsv($fh, 1000, ':', '')) !== false) {
    $stmt->execute($data);
}