使用:分隔符将文件导入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将此文件导入myMySQL
数据库?
在“导入”选项卡上,可以上载CSV文件。上载文件,选择“CSV”格式,然后设置:
- 用以下符号分隔的列:
:
- 包含以下内容的列:(空)
$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);
}