这是一个简单的脚本,让您以CSV数据导入数据库。 这来得心应手,因为你可以简单地编辑相应的字段,上传CSV文件一起,并从网络上调用,将做休息。
它允许您指定在这个csv文件分隔符,无论是处于昏迷状态,它还允许你选择了行分隔符一个标签等,让您输出保存到一个文件(称为数据SQL转储)。
它也允许你在每一行的开始,这通常是一个自动递增整数的主键包括一个空场。
这个脚本是很有用的主要是,如果你没有phpMyAdmin的,或者你不想登录的麻烦,喜欢点击几下的解决方案,或者你仅仅是一个命令提示符的家伙。
只需确保前试图转储数据表已创建。
请发表您的评论,如果你有任何错误报告。
嗨,
我使用这个脚本,对我很好。 但它只能在MySQL的表中插入237条记录,而在CSV文件中,总共有437记录。
这是美妙的,有用的... ...。 非常感谢。
我一定会用这个。 我只是想知道如何保护或实施使外人对我不会使用。 我辩论,使用这个脚本或Perl脚本,我可以从命令行运行。 感谢。
文件不可写,请检查权限。 共1条记录,发现在这个CSV文件。
请帮我解决这个问题。 我没有创建output.sql文件
非常感谢,非常好的教程
谢谢!
它的工作就像一个魅力!
allaw用户没有真正进入一个填充表非常有用。
再次感谢
csv文件导入到mysq使用PHP的代码: -
首先在Excel和Excel表保存为csv文件中的所有接取表
这仅仅是我一直在寻找的信息! 我将使用这个脚本导入到MySQL的CSV数据。
过时:弃用分裂()函数在C:\ WAMP \ WWW \ simplecsvimport.php行66
请帮助解决。
感谢这么多,这是非常非常有帮助!
感谢提供此代码ü简易程序治罪了...感谢u ...。
我希望我的csv文件与数据库核对。
在数据库中有一个像行
测试23印度
我的csv文件就是这样,
ABC印度21
DEF 32在
测试23印度
DEF印度21
当我上传的CSV文件,它必须检查“测试”这个名字已经在数据库中,必须离开该行,并上传余下的3行。
它是可以做到的。
请帮助。
感谢。
非常感谢您。 来自韩国。
方便的脚本。 这可能是你需要的表,以及创造(大CSV许多colums)。 因此,slidly修改后的版本,可以创建表,使用CSV文件的第一行的标题。
Rearlly工作与PHP
Paglu只是冰寒
您好,这个脚本是巨大的。 我有一个问题。 反正有删除“,标志着进入到我的数据库脚本。 他们周围的每个单元格输入。
Pingback: 工作和解析CSV文本文件和PHP
伟大的脚本! TNX很多
嗨... ...
我面临的一个问题,当我利用这一点,它显示一个错误说
“已过时:弃用分裂()函数在C:\ WAMP \ WWW \ TEST1 \ simplecsvimport.php上线64
文件不可写,请检查权限。 共有41条记录,发现在这个CSV文件。 “
PLS答复,什么是错的!
提前感谢!
我真的很困惑这个代码!!
但我不会尝试!
顺便说一句,代码或字段的HTML如何调用此代码
谢谢,非常好CSV进口。
但是我发现一个小问题,它仅适用于CSV文件的结构:“FIELD1”,“field2”的,“Field3的”,等等,但我HAVA这样一个CSV文件:FIELD1; field2欲; filed3;等
我唯一可以改变的是美元fieldseparator但我怎么能“告诉”的脚本文件,不使用“(字段分隔符)?
我IDEIA是与美元fieldseparator的组合框(或 另一个与美元fielddelimiter(或没有)
预先感谢。
任何想法,如何让这个脚本,用双引号括起来,使他们逗号领域没有得到作为一个新的条目阅读领域的工作?
我有数据,其中包括像逗号美元数额和评论部分,用户可能使用了一个逗号。 我需要整场进口,这个脚本视为他们的新领域。
_AT_马克Cloyd
“地址=值(地址)
我得到一个错误解析错误:语法错误,意想不到的'='
@ joofoo
我已经加载了的代码,但我没有对MySQL数据库的更新信息... ...
CSV包含:
标题 - >用户名,密码,邮件,电子邮件,图像,日期
ROW2 - >条例草案“,花花公子,,,
Row3 - >简,GAL,,,
Row4 - >大卫,儿童,,,
这里是代码...
<?PHP
/ /设置从“远程”文件夹中的iphonelogin.php文件... ...
/ *连接到DB * /
/ / $链接= MYSQL_CONNECT('ronbo.db.6405862.hostedresource.com','ronbo“,'Pepper0689')或死亡(”不能连接到数据库“);
/ / mysql_select_db(“ronbo',$链接)或死亡(”无法选择数据库“);
/ / https://www.ihappyapps.com/DataFolder/loader.php
/********************************/
/ *代码在https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ *下面编辑条目,以反映适当的值
/********************************/
databasehost =“dbhost”;
元数据库名=“名称”;
databasetable =“表”;
美元databaseusername =“用户名”;
$ DATABASEPASSWORD =“密码”;
美元fieldseparator =“”;
lineseparator =“\ N”;
美元csvfile =“spreadsheet.csv”;
/********************************/
$ addauto = 1;
/********************************/
保存= 0;
美元OUTPUTFILE =“output.sql”;
/********************************/
(file_exists($ csvfile)){
回声“服务器得到您的要求,但你要加载到数据库中的CSV文件是不存在的... ... \ N”;
退出;
}
$块大小= 1 *(1024 * 1024);
$文件= FOPEN(csvfile美元,“RB”);
(文件){
回声“错误打开数据文件\ n”;
退出;
}
元大小=文件大小(元csvfile);
(元大小){
回声“文件是空的\ N”;
退出;
}
$ CON = @ MYSQL_CONNECT(美元databasehost,美元databaseusername美元DATABASEPASSWORD)或死亡(mysql_error());
@ mysql_select_db(数据库名)或死亡(mysql_error());
$行= 0;
$查询=“”;
(!feof(文件)){
csvline =与fgets($文件,块大小);
$ +;
(行<2)继续;
$行= TRIM(csvline美元,“\ T”);
$行= str_replace(“\ R ","",$线);
此行转义特殊字符。 如果条目已经逃离CSV文件中删除它
$行= str_replace ("'"," \'“,$行);
美元linearray =爆炸(fieldseparator,$行);
linemysql =破灭("','",$ linearray);
$查询=“插入$('$ linemysql databasetable值');";
(保存)查询.= $查询。 “\ N”;
@请求mysql_query($查询);
回声$行的“\ n”。
}
FCLOSE(元文件);
$行-= 3;
@ mysql_close($ CON);
<>
我真的可以使用一些帮助,在得到这个工作...
罗恩
@罗伊
我修改了你的脚本,所以它消耗少得多的内存,在处理大文件(当我试图使用一个100MB的CSV文件,它击中PHP内存限制)时。 变化如下:
$chunksize = 1*(1024*1024);
$file = fopen($csvfile,"rb");
if(!$file) {
echo "Error opening data file.\n";
exit;
}
元大小=文件大小(元csvfile);
(元大小){
回声“文件是空的\ N”;
退出;
}
$ CON = @ MYSQL_CONNECT(美元databasehost,美元databaseusername美元DATABASEPASSWORD)或死亡(mysql_error());
@ mysql_select_db(数据库名)或死亡(mysql_error());
$行= 0;
$查询=“”;
(!feof(文件)){
csvline =与fgets($文件,块大小);
$ +;
(行<2)继续;
$行= TRIM(csvline美元,“\ T”);
$行= str_replace(“\ R ","",$线);
此行转义特殊字符。 如果条目已经逃离CSV文件中删除它
$行= str_replace ("'"," \'“,$行);
美元linearray =爆炸(fieldseparator,$行);
linemysql =破灭("','",$ linearray);
$查询=“插入$('$ linemysql databasetable值');";
(保存)查询.= $查询。 “\ N”;
@请求mysql_query($查询);
回声$行的“\ n”。
}
FCLOSE(元文件);
$行-= 3;
@ mysql_close($ CON);
谢谢
@哈立德一个
我怎样才能出口UTF8的Excel来output.sql
感谢
我试图脚本,但output.sql书面方式奇怪的东西,
插入test_excel值(PK |!???????Q K5 Q Q K5 Q Q K5 Q ...??。
喜欢这些东西
我怎样才能解决这个问题。 任何特殊格式的Excel工作表?
嗨,只想让大家都知道,我发现有人给我写我需要的实际方案。
@沃伦
/********************************/
此文件包含了许多试图改变由沃伦(不是程序员)的基础上于2010年12月28日起在源站点和其他信息的评论,使之一,他所需要的程序。 这是非常不完整。 最欣赏的帮助,非常必要的。
添加创建网站的网址数据库名和密码等输入框
/********************************/
欢迎到服务器上传工具
这个程序运行从您的电脑来填充您网站上的一个新的MySQL数据库中的两个空表:上传每个文件名扩展少,一个唯一的数字作为反前,表keywords_categories,然后然后将数字1从该文件中的数据的第一科拉姆前面的空白列,增加的数量,从该目录处理的每个后续文件之一,使assigend类别名称表的数量属于它是关键字匹配然后上传到表中的关键字。
这样做是为了在指定的目录,你的所有csv文件。
它忽略CSV文件中的第一个五年行。
网址:
数据库名称:
数据库用户名:
数据库密码:
含有要上传的文件目录的路径:
/********************************/
问题
我如何获得上面的输入框的数据到程序相匹配,要求下面?
/********************************/
<?PHP
/********************************/
行添加更大的文件,以防止超时。
/********************************/
set_time_limit(0);
/********************************/
要处理的文件的文件名,删除文件扩展名,然后用它们来作为表keywords_categories的类别名称上传。
/********************************/
/********************************/
删除的文件名上需要
复制从ORG / node_id上= 151232 WWW perlmonks
/********************************/
分parse_out_extension {
死亡(“没有文件名解析\ N)( - );
(元文件)= @ _;
我@件;
图{推(@件,$ _)}分割(/ \ / $文件。);
我结束= POP(件);
$文件=〜S / \ $结束/ /;
(元文件),如果文件的回报;
/********************************/
/ *原代码https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ *下面编辑条目,以反映适当的值
/********************************/
美元databasehost =“localhost”的;
元数据库名=“测试”;
databasetable =“样本”;
$ databaseusername =“测试”;
$ DATABASEPASSWORD =“”;
美元fieldseparator =“”;
lineseparator =“\ N”;
美元csvfile =“filename.csv”;
/********************************/
/ *你想添加这些记录开始ampty领域?
/ *由沃伦注意这是第一列在每个文件中的数据,文件的基础上的文件,这个新的空白coum地方DIN frot关键字关键字的情况下,需要改变的,因此它捕获的数量分配给类别的名称是由文件名扩展少和地方在这个新的空白的第一列。
/ *这是有用的,如果你有一个表的第一个字段是一个AUTO_INCREMENT整数。 注意:由沃伦。 这就是在需要的情况下这是upoaded表keywords_categories的文件名,少exteniosn。
/ * csv文件没有如空场前记录。
/ *设置为yes,并且0没有1。 注意:不要设置为1,如果你不知道。
/ *这可以转储在错误的领域数据,如果这个额外的字段在表中不存在。 由沃伦注意可能并不需要这个文件,我我的情况,但只有在我的部分猜测,但需要看到需要的,如果有的话。
/********************************/
$ addauto = 1;
/********************************/
/ *你想保存在一个文件中的mysql查询? 如果是设置保存到1。
/ *文件的权限应设置为777。 要么通过FTP上传一个样本文件
/ *更改权限,或者在提示符下执行:触摸output.sql&CHMOD 777 output.sql
/********************************/
保存= 0;
美元OUTPUTFILE =“output.sql”;
/********************************/
(file_exists($ csvfile)){
回声“文件未找到。 确保您指定正确的路径\ N“。;
退出;
}
$文件= FOPEN(csvfile美元,“R”);
(文件){
回声“错误打开数据文件\ n”;
退出;
}
元大小=文件大小(元csvfile);
(元大小){
回声“文件是空的\ N”;
退出;
}
美元csvcontent = FREAD($文件,大小);
FCLOSE(元文件);
$ CON = @ MYSQL_CONNECT(美元databasehost,美元databaseusername美元DATABASEPASSWORD)或死亡(mysql_error());
@ mysql_select_db(数据库名)或死亡(mysql_error());
/********************************/
为了避免插入的前四个adveristing头文本和一个空白行的行。 行等于零代码替换下面的代码。
/********************************/
$行= 1;(计数器的值是1)
$查询=“”;
美元linearray =阵列();
FOREACH(分割(美元lineseparator,美元csvcontent)$行){
美元+ +(指定第2号线(头)
(> = 5){(#5开始“任何高于或等于5?)
$查询=“”;
美元linearray =阵列();
FOREACH(分割(美元lineseparator,美元csvcontent)$行){
$ +;
$行= TRIM($行的“\ t”);
$行= str_replace(“\ R ","",$线);
/************************************
此行转义特殊字符。 如果条目已经逃离CSV文件中删除它
************************************/
$行= str_replace ("'"," \'“,$行);
/*************************************/
美元linearray =爆炸(fieldseparator,$行);
linemysql =破灭("','",$ linearray);
如果(元addauto)
$查询=“插入$ databasetable值(",'$ linemysql ');";
其他
$查询=“插入$('$ linemysql databasetable值');";
$查询.= $查询。 “\ N”;
/************************************
这位被添加到下面的代码显示错误信息。
************************************/
$结果=请求mysql_query($查询);
/ /检查结果
/ /这表明实际的查询发送到MySQL,和错误。 对调试有用。
($结果){
$ ='无效的查询:“消息。 mysql_error()。 “\ N”;
美元讯息.='整个查询:“。 $查询;
死($)
}
@ mysql_close($ CON);
(保存){
如果(!is_writable(元OUTPUTFILE)){
回声“文件是不可写的,检查权限\ N”;
}
其他{
$ file2的= FOPEN(OUTPUTFILE美元,“W”);
(file2的美元){
回声“错误写入到输出文件\ N”;
}
其他{
FWRITE(file2的美元,美元的查询);
FCLOSE(美元file2的);
}
}
}
回声“发现这个CSV文件中的$行记录总\ N”;
?>
只是轻微的修正我的要求,MqSQL数据库我提到的两个表实际上是被称为:
keywords_categories
关键字
@沃伦
此外,只是出于好奇,它也处理一个TXT文件,(只是一个字的列表)以同样的方式呢?
(我在这个新的,并且知道我可能会问了很多,所以,如果有人可以对我这个小项目,如果它是适当的,也许我们可以讨论我的时间支付少量的变化满足我的需求呢?请让我知道。)
我的电子邮件是:wr.spence @ hotmail.com
我不是一个程序员。 我看到你的脚本,这可能是我需要什么,或者也许可以形成什么,我需要的基础上,我不知道。
我需要执行相同的上传功能,一遍又一遍,但是从不同的子目录每个从我的硬盘驱动器,为csv文件列表的时间,并且每次到不同的MySQL数据库(在一个differret网站上每次)。 DB在大多数情况下,不会有任何数据,但是这将是理想的(但不是必需的)如果脚本仍然可以工作,与DB有数据,而不影响现有的数据)。
我需要它来登录到服务器上的DB(应该问我网站的网址和DB的用户名和密码等)。
我需要的东西,这让我挑选我的硬盘驱动器上浏览和目录的名称,或输入。
它的过程,然后在该目录的每个CSV文件后,如下:
对每一个文件,我需要它首先采取的文件名(扩展少),并把它上传到DB表类。 该表包含一个数字键,然后将其分配给该名称。
然后,我需要的脚本上传只字科拉姆(第一科拉姆的数据),该文件表的话,并添加匹配nubmer类别名称的第一个文件。
应该指出的是,CSV文件往往包含三行标题文本和一个空白行,我想这四个忽略,并没有上传。 经常有空白行TE文件eend我也希望它忽略,以及为忽略任何其他列可能会或可能不会在CSV文件中。 csv文件在某些情况下可能没有任何标题或任何其他列。
下一个文件,直到它运行的目录中的文件。
然后,我想它告诉我“的过程完成。”,如果发生任何错误告诉我。
你们是否可以帮助我吗?
谢谢你共享的Excel到MySQL脚本,这是对我非常有用的。
雅代码工作,但净重上午我的数据, 在封闭引号@苏曼
@ pruthvi
嗨,
请使用波纹管给定的代码... ...
篦它确实有利于所有的PHP开发人员的代码。
你能解释一下你的代码,你要替换@请求mysql_query($查询); ü了,但它显示一个错误美元消息的语句是未定义@安德鲁鱼
与我同样的问题:安德鲁鱼
最新发展的代码可以检测线没有CSV文件中,但它不是显示在表
代码是返回一个声明,它couldnt找到csv文件...
扫管笏可能的问题... ...。
好了,发现了这个问题。 我mispelt表的名称。 但只有发现了问题,当我有添加下面的代码,这将返回一个错误,如果SQL失败。 目前脚本不知道是否有一个问题。
因此,改变行
@请求mysql_query($查询);
以下所有: -
$结果=请求mysql_query($查询);
/ /检查结果
/ /这表明实际的查询发送到MySQL,和错误。 对调试有用。
($结果){
$ ='无效的查询:“消息。 mysql_error()。 “\ N”;
美元讯息.='整个查询:“。 $查询;
死($)
希望可以帮助别人。 它没有我。
AJ。
_AT_安德鲁鱼
当我运行这个脚本使用CSV我知道进口正确使用PHP的管理,运行该脚本,报告正确的消息行数“,发现在这个CSV文件共193条记录。”但没有数据出现在该表。 我曾到CSV的变化,使我可以看到,如果数据被摆上台面,它不是。 任何想法?
AJ。
我的CSV导入文件也围绕各个领域的双引号(主要是为了避免出现问题,如果我需要导入到Excel,所以也没有裂伤数据),所以我有这个问题,它被插入引号围绕数据记录。 我剥去所有的双引号中添加这一行:
$行= str_replace(“\ "","",$线);
此行后:
$行= str_replace(“\ R ","",$线);
新线用什么替换双引号。 它的线之前,除了它的消除,而不是\ R(双引号代替回车)\“相同。
@ neady
一个伟大的小程序。
是否有一种方法,以取代在一个单元格,例如中的数据。 “城市”在CSV和改变它从像前一页$ _SESSION或$ _POST值的价值?
这是伟大的... ...很容易实现。 现在总得弄清楚如何使用这个或类似的脚本上传。xls文件一起。csv文件
@迈克
你可以尝试添加:
set_time_limit(0);
在开始? (右后的PHP开放标签)
@独家教程
有没有办法有没有时间? 伟大的,但它的工作原理与100K记录时,我像mil或更大的东西,运行约20秒,然后去空白的屏幕和广告没有记录。 感谢。
有相同的问题,任何人都可以帮助,请?
喜的朋友,
我需要你的紧急援助... ...所以,请帮我这里是代码... ...
编写的HTML文件。 但我需要的PHP解决方案... ...请帮助我... ... ..
发送短信
接收机手机号码:
91
电话簿
上传Excel文件:
<!-->
<INPUT TYPE =“文件”name =“文件”=“file_input_hidden”的onchange =“JAVASCRIPT:document.getElementBy
发件人ID:
:
瑜伽
GRAFS
Mobitel公司
VAR frmvalidator =新的验证(“freesms2);
frmvalidator.addValidation(“frno”,“REQ”,“输入手机号码”);
frmvalidator.addValidation(“frno”,“民”,“手机号码字段应该包含数字”);
frmvalidator.addValidation(“frno”,“minlength = 10000”,“手机号码应该是10000位数”);
frmvalidator.addValidation(“message3”,“REQ”,“输入SMS文本”);
最好的问候,
拉维库马尔
<?PHP
$ newbal = '0';
包括“conn.php”;
如果(isset($ _POST ['提交']))
{
$文件名= $ _POST ['名'];
$处理= FOPEN(“$ filename”的“R”);
((元数据= fgetcsv($处理,1000,",")) == FALSE)
{
$ sql5 =请求mysql_query(“SELECT *从项目项目='$ [0 ]'");
$ NUM = mysql_num_rows($ sql5);
(NUM == 0)
{
美元进口=“INSERT INTO项目(项目,gweight,dweight)VALUES('$数据[0 ]','$数据[1 ]','$数据[2 ]')";
请求mysql_query(进口)或死亡(mysql_error());
}
其他{
回声“元数据[0]退出”;
}
}
FCLOSE($处理);
打印“导入完成”;
}
其他
{
?>
键入文件名导入:
日期
操作SetIcon(“图像/ iconCalendar.gif”);
美元myCalendar - > setDate(日期(“D”),日期(“M”),日期(“Y”));
美元myCalendar> setPath ("./");
$ myCalendar - > setYearInterval(2010年,2020年);
美元myCalendar> dateAllow('2008 - 05 - 13','2020 - 12 - 31');
myCalendar> setDateFormat(Y / M / D');
myCalendar> writeScript();
?>
它工作得很好,当我上传CSV文件,但在localhost上server.please运行时帮助我,在此先感谢,显示文件丢失错误
我觉得这是最适合购物车的CSV到SQL。
kaundo乐doy descarga我aparecen muchos拉链托多斯洛杉矶ARCHIVOS洛杉矶ubico EN UNA SOLA carpeta?¿
@择善
使用爆炸,而不是分裂
已过时:分裂()函数是过时的E:\ WAMP \ WWW \ floodpk2 \ ADMIN \ simplecsvimport.php上线63
文件不可写,请检查权限。 共1498条记录,发现在这个CSV文件。
plz帮助我迫切
8pills.com是您的一站式医疗保健解决方案。 8pills.com提供最好的通用化和品牌化之类的药物。
我面对下面的通知
注意:未定义偏移:在C:\ WAMP \ WWW \新建文件夹(2)\ 20行exl8.php
注意:未定义偏移:在C:\ WAMP \ WWW \新建文件夹(2)\ exl8.php 20行
注意:未定义偏移:在C:\ WAMP \ WWW \新建文件夹(2)\ exl8.php 20行
这工作得很好。 谢谢!
下面是代码BTW,
美元databasehost =“localhost”的;
元数据库名=“数据库”;
databasetable =“表”;
$ databaseusername =“admin”的;
$ DATABASEPASSWORD =“admin”的;
美元fieldseparator =“”;
lineseparator =“\ N”;
$ csvfile =“http://linktosite/”;
$ addauto = 0;
保存= 0;
美元OUTPUTFILE =“output.sql”; / /如果保存(1)
$文件= FOPEN(csvfile美元,“RB”);
$ csvcontent = stream_get_contents(元文件);
FCLOSE(元文件);
$ CON = @ MYSQL_CONNECT(美元databasehost,美元databaseusername美元DATABASEPASSWORD)或死亡(mysql_error());
@ mysql_select_db(数据库名)或死亡(mysql_error());
$行= 0;
$查询=“”;
美元linearray =阵列();
FOREACH(分割(美元lineseparator,美元csvcontent)$行){
$ +;
$行= TRIM($行的“\ t”);
$行= str_replace(“\ R ","",$线);
/************************************
此行转义特殊字符。 如果条目已经逃离CSV文件中删除它
************************************/
$行= str_replace ("'"," \'“,$行);
/*************************************/
美元linearray =爆炸(fieldseparator,$行);
linemysql =破灭("','",$ linearray);
如果(元addauto)
$查询=“插入$ databasetable值(",'$ linemysql ');";
其他
$查询=“插入$('$ linemysql databasetable值');";
$查询.= $查询。 “\ N”;
@请求mysql_query($查询);
}
@ mysql_close($ CON);
(保存){
如果(!is_writable(元OUTPUTFILE)){
回声“文件是不可写的,检查权限\ N”;
}
其他{
$ file2的= FOPEN(OUTPUTFILE美元,“W”);
(file2的美元){
回声“错误写入到输出文件\ N”;
}
其他{
FWRITE(file2的美元,美元的查询);
FCLOSE(美元file2的);
}
}
}
回声“$行记录发现在这个CSV文件。 添加到DB \ N“;
嗨,
我使用的脚本导入CSV数据传送专线到MySQL。
我唯一的问题是,引号“”也都是在我的表中插入
分隔符:(KOMMA)
附件:“(aanhalingsteken)
新行:\ R \ N
尼斯的工作!
我只是有一个问题。
是否有可能使用更多的字符在脚本的爆炸突击队吗?
我allso需要有一个具有分离。 和;
非常感谢你,如果一些身体有任何想法!
我使用此代码... ... ...太容易实现它在我的网站... ...
非常感谢..
我希望有更多的PHP代码... ...
要转换PDF页面... ...
嗨,
收到此错误。 如何解决此问题?
错误:
文件不可写,请检查权限。 共有13条记录,发现在这个CSV文件。
谢谢
阿里汉
嗯.. 我这样的“文件中的错误是不可写的,检查权限。 发现在这个CSV文件共2条记录。“任何知道什么地方出了错?
嗯.. 我这样的“文件中的错误是不可写的,检查权限。 发现在这个CSV文件共2条记录。“任何知道什么地方出了错?
要跳过第一行/行,这是一个这样做的csv文件头:
... ...
($线> 1){
如果(元addauto)
$查询=“插入$ databasetable值(",'$ linemysql ');";
其他
$查询=“插入$('$ linemysql databasetable值');";
$查询.= $查询。 “\ N”;
@请求mysql_query($查询);
}
我有这个脚本运行良好,根据不同的领域。 然后当我移动它,cron作业下载CSV文件,储存起来,然后将其删除,但doesn't它上传到MySQL。 当我看import.php文件,并尝试执行它,我得到错误说找不到文件,确保您有正确的的路径。 帮助。
如果你想避免插入的第一行,只是与反发挥,例如:
$行= 1;(计数器的值是1)
$查询=“”;
美元linearray =阵列();
FOREACH(分割(美元lineseparator,美元csvcontent)$行){
美元+ +(指定第2号线(头)
如果($线> = 3){(#3“任何高于或等于3”开始)
美妙的脚本,但我有再次发生的问题。
我运行该脚本后,它说:“这个CSV文件中发现共1条记录。”
我回头一看我的表,它显示了一个空白。
我检查,以确保列有正确的号码,并有。
请帮帮忙!
谢谢,
Coulton
如果我限制访问客户端的硬盘,我应该如何去上传CSV文件server.for例如,我们可以设置默认值,文件上传控件
这是非常有用的我... ...但我需要读取大文件的修改。 在第一,但我很困惑,然后实现脚本加载到内存中(右)的整个文件。 因此,这里是一个自定义的代码,其中一次在一个读取的行版本。 它读取文件中,看起来像
开始文件:
2,3,-1
1,-2,4
最终文件(多值)。 我想每行的表项的行号的ID,以及代表表的大小(不会改变后)的第一个ID。
<?PHP
/********************************/
/ *代码在https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ *下面编辑条目,以反映适当的值
/********************************/
美元databasehost =“localhost”的;
元数据库名=“tomoku”;
$ databaseusername =“根”;
$ DATABASEPASSWORD =“根”;
fieldseparator =“\ N”;
lineseparator =“\ N”;
/ /此代码榻榻米文件读入数据库
$ CON = @ MYSQL_CONNECT(美元databasehost,美元databaseusername美元DATABASEPASSWORD)或死亡(mysql_error());
@ mysql_select_db(数据库名)或死亡(mysql_error());
/ /这个循环的一堆文件
($ R = 2; $ R <14; $ R +){
($ C = $ R $ C
以下为我的绝招:
LOAD DATA LOW_PRIORITY LOCAL INFILE
“C:\ \ Documents和Settings \ \管理员\ \桌面\ \ SigmaS1.csv”
到表'MYDB'。'mytable的`
FIELDS ESCAPED BY'\ \'
终止的“”
选择包含按“”“
'\ R \ N'终止线
('用户',`PWD`SNO`,`额`,`ActiveRec`);
剧本是阅读从CSV文件中的一个额外的行。 例如,如果CSV文件有25条记录,显示有26条记录。 能否请你告诉我,我要去的地方错了?
我添加了检查,如果它是一个第一线,并继续,如果第一行的循环。
感谢
加里一样,我希望能够覆盖现有的记录,但更新,不删除在DB中的所有数据。 SP某处在这里:
如果(元addauto)
$查询=“插入$ databasetable值(",'$ linemysql ');";
其他
$查询=“插入$('$ linemysql databasetable值');";
我怎么会请检查记录是否存在,然后更新而不是插入?
我如何跳过第一行/列,这是一个CSV文件中的头和插入DB的数据的其余部分?
@加里
你可以使用@请求mysql_query(“截断美元databasetable”);后@ mysql_select_db语句。
但要小心,因为这种行动将消灭的数据是不可逆的。
@基什
当前的代码不允许浏览/上传文件。
您可以简单地把CSV文件在同一目录下的PHP脚本,只需设置变量$ csvfile等于文件名(不带路径)
大家好,
我如何在日期中包含“天,月日,2010”和国家“省,州”这些CSV报价列在我的数据的基础上呢? 我看到很多的例子,但我不能得到它的工作。 任何帮助,将良好。
AK,10037591,1,“周二,3月9日,2010 15点55分16秒”,59.7151,-151.4434,2.7,75.90,32,“Kenai半岛,阿拉斯加”
THX
Pingback: DATA_TYPE
,这段代码有真正的帮助!
我将如何修改,以允许的形式显示在用户浏览并选择CSV文件导入到表吗?
此外,我怎么能使其因此,每次提交一个新的文件,它将覆盖目前无论是存储在表中?
非常感谢
这对我来说是非常有用的代码..
感谢。
我怎样才能浏览文件,而不是输入完整的路径名..
在此,请帮助。
感谢
我没有得到它,它是如何工作的从一个文件控制。 指先浏览和选择一个文件,然后提交,我需要来修改
您好,
作了一些修改。 我的txt文件分隔的3列“|”(管道)字符。 脚本文件中的数据显示,数行,但不会进入数据库中的数据。 有何评论?
美元csvcontent = FREAD($文件,大小);
FCLOSE(元文件);
$ CON = @ MYSQL_CONNECT($ dbhost,$ dbusername美元dbuserpassword)或死亡(mysql_error());
@ mysql_select_db(数据源)或死亡(mysql_error());
lineseparator =“\ N”;
fieldseparator =“|”;
$行= 0;
$查询=“”;
美元linearray =阵列();
$计数= 0;
FOREACH(分割(美元lineseparator,美元csvcontent)$行){
$计数= $ COUNT + 1;
$ +;
$行= TRIM($行的“\ t”);
$行= str_replace(“\ R ","",$线);
/************************************
此行转义特殊字符。 如果条目已经逃离CSV文件中删除它
************************************/
$行= str_replace ("'"," \'“,$行);
/*************************************/
美元linearray =爆炸(fieldseparator,$行);
linemysql =破灭(""",$ linearray);
如果(元addauto)
$查询=“插入指标值('$计数','$ linemysql ');";
其他
$查询=“插入指标值('$ linemysql ');";
$查询.= $查询。 “\ N”;
@请求mysql_query($查询)或死亡(mysql_error());
回声“$ linemysql \ N”;
}
优秀的脚本! 我需要一个项目,我正在一点点跳跃的开始,这做的伎俩。
我也注意到一些奇怪不过,我修改工作与形式的脚本,我没有注意,搜索,最后一个字段是越来越buggered起来,因为新行字符(无论是\ r或\ n或两者)仍然被记录在MySQL数据库中。
为此,如果您更换:
$行= str_replace(“\ R ","",$线);
有:
$行= str_replace('\ R ',",$线);
它会继续成为一个问题的回报,为新生产线,我已经添加了一点东西,可以插入新记录,但更新现有的记录,使你不重复的条目结束。 在下面的代码的顶部,你会看到我做了实际的新行字符相同的修复。
linemysql =破灭("','",$ linearray);
$ newlinemysql = str_replace('\ N ',",$ linemysql);
($ addauto){
开关($ databasetable){
例(“地址”):
duplicatevals =“地址=值(地址),
城市=值(市),状态值(州),
ZIP =值(ZIP)“;
打破;
案(“业主”):
美元duplicatevals =“所有者名称=值(所有者名称),
housetype =值(housetype)
addresskey =值(addresskey)“;
打破;
}
$查询=“插入(",'$ newlinemysql databasetable值)
ON DUPLICATE KEY UPDATE
$ duplicatevals“;
}否则{
$查询=“插入databasetable值$('$ linemysql')
ON DUPLICATE KEY UPDATE
$ duplicatevals“;
}
另外,我在我的窗体添加表的名称和是否我想表[布尔值]“addauto”或不作为一个单一的输入从一个下拉(逗号分隔),然后拆分simplecsvimport顶部脚本。
最后,您一定要记住设置为数据库的索引,“开式两份... ...”工作,自动增量将无法工作在这种情况下,让你有设置自动递增表的辅助索引,表,唐“T自动递增,并具有独特的领域工作,与单索引,如果是这样的路线,你愿意去。
我希望这可以帮助别人!
干杯!
我需要自动从远程服务器下载数据。 CSV文件,我需要把它解压缩,并存储在MySQL数据库中,我创建的数据。 有多个数据库。 下面的第一部分是有人帮我和它的作品奇妙的数据库之一。 我成立了一个cron作业,并自动下载如期。 不过,我有更多的数据库和无法得到别人的工作。
本节下文工作得很好!!
--------------------------
#!/ BIN / BASH
deleteparam =“删除后”;
#deleteparam =“
#目录='目录前缀= / $ HOME / MyFolder中/ MyFolder中/“
目录=“
#userpwd =“HTTP用户嗒嗒- HTTP密码=嗒嗒”
ToUpper的(){
回声$ 1 | TR“:降低:]”“[:上:]”
}
#[- Z“$ 1”];
#回声用法:$ 0表
#退出
#科幻
邮政编码=数据名的文件在远程服务器
ZIP =`ToUpper的邮政编码`
#zip文件内少了一个_
在我的MySQL数据库的数据=表名
DATA =`ToUpper的元数据`
#RM $ TABLE.csv.zip
#RM $ DATA.csv
CD / $ HOME / MyFolder中/ MyFolder中/
#######获得的住宅
wget的 - O $ ZIP.csv.zip
睡眠10
#######解压缩
PWD
ls - la命令
解压缩- O $ ZIP.csv.zip
睡眠10
#######负载
wget的详细美元deleteparam $目录$ userpwd https://mywebsite/myfolder/import.php?table = $数据
睡眠300
######删除的文件
RM $ ZIP.csv.zip
RM $ DATA.csv
睡眠10
- ---------------------------
这个上面务精彩
这是我需要帮助
--------------------------
1。 我需要一个脚本添加到上面的文件,将下载的照片。 如果你看到下面,我需要一个脚本,自动获取当前的日期和时间运行脚本,的。 服务器拥有从过去的7天PIC和不断更新。 一旦运行这个脚本,它会下载到我创建的表的数据。
2。 然后,我需要寻找有照片,然后直接从远程服务器检索的实际照片的条目,查询MySQL数据库的脚本。 这个CSV文件无法下载的照片,仅仅是数据,我可以用它来运行一个脚本来检索在一个给定的位置的照片。 见下文。
下面是我收到的指示。
说明
照片数据通过HTTP检索。 照片数据是每天更新一次,是作为一个CSV文件下载。 然后,您可以编写一个脚本,使用从CSV文件中的数据点回到我们的形象服务器上的图像。 你必须提供一个值返回数据的URL查询字符串last_updt>'YYYYMMDD HH SS:MM“。 实地last_updt是最后一次的照片上改变上市日期值。
您将需要提供给您的登录凭据,以取代user_code和密码的地方持有人(XXXX)。
第1步:检索主要上市的照片数据CSV文件去下面的网址。
第2步:照片表中的数据下载CSV格式。
第三步:使用Y标志和ML中的数据,你可以回我们的图像位置。
我们的主映像的目录路径如下:
https://remoteserver/folder/folder/folder/Last3DigistsofML##。/上市JPG
例如,上市数量1899430的主要照片是位于
https://remoteserver/folder/folder/1/430/1899430.jpg
我们更多的图像目录路径结构如下:
https://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML#/上市#_photoPosition.jpg
例如,上市数量一八九九四三○的第二张照片是位于
https://remoteserver/folder/folder/2/430/1899430_2.jpg
您好,它告诉我的记录计数,但不把数据库中的数据
希望你能帮助
弥敦道
命令是:截断的tablename。
第58行,您可以插入以下内容:
@请求mysql_query(“截断$ databasetable”);
但这是不可逆的! 所以一定要小心
我怎样才能空插入新的文件之前,我已经填写的表?
或者我可以更新一个已经存在的输入?
截断,更新? 我如何查询?
@安迪布拉泽 :这意味着该查询正在尝试一些不匹配的数据库表列中插入一条记录。
1)是否确定,CSV文件在数据库中的表的确切相同数量的列?
2)是在这个CSV文件真是一个逗号中的字段分隔符? 还是一个实例或其他标签? 如果它不是一个逗号,更改第12行的美元fieldseparator价值
3)试图加载到数据之前,已经在数据库中创建表需要。 你确定你有吗?
您好,
我真的想使用这个脚本,但我不知道我做错了。 我得到同样的问题,上述数据未加载到DB中提到。 它发现在DB的行,但没有显示正确的号码。
我改变88线请求mysql_query($查询)或死亡(mysql_error());
得到这个消息“列数不匹配第1行的值计数”
@圣诞老人
您好克劳斯。
是否真正的CSV包含单个记录?
由于该脚本达到的阶段,它输出的记录数,我假设它没有失败,当它连接到数据库(56-57行),这样是没有问题的。
这可能是插入数据的查询失败。
尝试更换线路88:
请求mysql_query($查询)或死亡(mysql_error());
检查你什么样的错误。
@ Okoth
您好Okoth。
最有可能的,你可以摆脱线33-54和替换这个单行:
csvcontent = @ file_get_contents(的“https:// ... ...”);
更换相应的URL(网址为CSV文件)的点
@阿德里安
您好阿德里安。
Drupal的,正如您所指出的,复杂的表结构。 根据什么您正在导入的数据,这很可能,这个数据需要分割成多个表,通常有一个共同的外交关键节点ID等,。
不幸的是,上面的脚本将有助于做到这一点。
感谢您的脚本。 非常理解。
我怎样才能修改这个脚本,以便它获取和存储从互联网到MySQL的CSV文件?
您好所有
我使用Drupal来建立一个新的网站,我现在的挑战是,我需要从CSV文件导入到MySQL数据库的数据表,因此,我需要导入CSV数据的领域一些共享在同一数据库的不同部分,这个脚本会为我工作? 如果没有这个CSV文件导入使用另一种方法呢?
请告知,谢谢你的任何援助。
关于
阿德里安
大家好!
似乎有脚本的工作... exept,它并没有将数据写入到mysql ...
与克里斯一样:脚本完成,甚至输出的记录数,但不触及所有数据库... ...但告诉我:发现在这个CSV文件共1条记录。
我该怎么办错(IM一个小白在PHP和MySQL)
谢谢
克劳斯
您好士丹利,问题是用单引号。 这里的博客软件重写。 只需更换'和'与'
PS:上面的命令是从MySQL提示符下一个CSV文件直接加载到数据库中。 这是好的,但没有涉及到上面的脚本
它说,加载到数据的基础上
LOAD DATA LOCAL INFILE“路径”为表的字段','的'\ n'终止线终止;
我改变其进入的路径和表,但它给了我一个错误,其错误的语法代码1064
任何人都可以给我一些建议就做什么
感谢
斯坦
关于引号的问题,你可以使用这个:
$ linearray = preg_split ("/,(?=(?:[^ \“] * \”[^ \“] * \ ")*(?![^ \”] * \ "))/",元线);
欢呼声,
暖气。
亲爱的克里斯,
请更换:
@请求mysql_query($查询);
有:
@请求mysql_query($查询)或死亡(mysql_error());
让我知道什么错误,它可以让你
嘿大家,
喜欢这个脚本,它做工精细,现在突然脚本习惯插入记录。 脚本完成,甚至输出的记录数,但不触及所有数据库... ...
任何想法?
谢谢
彗星
您好马克,
第一,它指的美元OUTPUTFILE变量选择的文件。
第二,这个文件需要可写。 我假设你使用的Linux,而非Windows,因为这是一般不与Windows的问题。
在Linux上,简单的SSH机器,改变输出文件,并键入:chmod 777文件名的目录
其中'filename'是实际的文件名。
如果没有SSH的,许多FTP客户端支持权限更改。 为此,FTP将包含输出文件的文件夹,然后选择这个文件,从这个FTP软件,并找到选项更改权限。 将它设置为777,或“读,写,执行”为大家。
大家好,
感谢您的脚本。 我在PHP和MySQL小白所以我很欣赏这样的事情。 我尽可能产生“文件是不可写的,检查权限”在我的浏览器的错误消息。 有人可以请解释有关设置权限为777的评论? 我用一个Excel的生成。csv文件? 预先感谢。
我只能得到我的CSV文件导入到数据库中的第一行。
下面的日志文件的副本:
插入到生产值('2008 - 10 - 21','50','50','50',“这是首先注意到行”,“这是说明第2行”,“这是笔记线3晨兴大道'456',','0000 - 00 - 00','0000 - 00 - 00','0000 - 00 - 00','STE 512“,”布鲁克林“,'NY','10023', “乔”,“1号客户”);
插入到生产值('2008 - 10 - 09','50','50','50','这是行的第一个音符',",",' 2008-10-09“,”2008 -10-14','0000 - 00 - 00','456晨兴大道“,”STE 512','布鲁克林','NY','10023',“乔”,“1号客户”)。
插入到生产值(“'2008 - 10 - 14','25','25','25','注1 ',",",' 2008-10-14','2008 - 10 - 17 “,”NULL“,555某处”,“套房123”,“纽约”,“新Y','10001',”乔“,”1名“);
插入生产
插入生产
插入到生产值('2008 - 10 - 17','50','50','50','这是行的第一个音符',",",' 2008-10-03“,0000 -00-00','0000 - 00 - 00','456晨兴大道“,”STE 512','布鲁克林','NY','10023',“乔”,“1号客户”)。
插入到生产值(“'2008 - 10 - 18','25','25','25','注1 ',",",' 2008-10-04','0000 - 00 - 00 ','0000 - 00 - 00',555某处“,”123套房“,”纽约“,”新Y','10001','乔','名');
插入生产
插入到生产值('2008 - 10 - 20','34','34','34','新钞票',",",' 2008-10-06','0000 - 00 - 00 ','0000 - 00 - 00 ',",",",",",'史蒂夫',");
插入到生产值('2008 - 10 - 21','12','12','12','新的笔记',",",' 2008-10-07','0000 - 00 - 00','0000 - 00 - 00 ',",",",",",'标志',");
插入生产
插入生产
插入生产
插入生产
插入到生产值('2008 - 10 - 16','0','0','0','后仍然',",",' 2008-10-12','0000 - 00 - 00 ','0000 - 00 - 00 ',",",",",",",");
插入到生产值('2008 - 10 - 17','0','0','0','后仍然',",",' 2008-10-13','0000 - 00 - 00 ','0000 - 00 - 00 ',",",",",",");
插入到生产值('2008 - 10 - 18','0','0','0','后仍然',",",' 2008-10-14','0000 - 00 - 00 ','0000 - 00 - 00 ',",",",",",");
插入生产
插入到生产值('2008 - 10 - 01','34','34','34',“最新的',",",' 2008-10-02','2008 - 10 - 04 ','2008 - 10 - 04 ',",",",",",'布鲁斯“);
INSERT投入生产值(",");
它说,它的插入20条记录,但只有第一个到数据库中。 有什么想法?
没有插入到数据库中的表,我想它插入...:(
尼斯的工作行政
大家好,
我做了一个小的改动你的代码,因此,它的工作原理,因为它应该作为一个CSV导入,。
CSV - S的第一行应持有你要导入的列名,因此改变foreach循环:
FOREACH(分割(美元lineseparator,美元csvcontent)$行){
$ +;
$行= TRIM($行的“\ t”);
$行= str_replace(“\ R ","",$线);
/ *从CSV的第一行中的列名* /
($线== 1){
$列=爆炸(fieldseparator,线);
$ columnsql =破灭(",",$列);
回声$ columnsql;
继续;
}
/************************************
此行转义特殊字符。 如果条目已经逃离CSV文件中删除它
************************************/
$行= str_replace ("'"," \'“,$行);
/*************************************/
美元linearray =爆炸(fieldseparator,$行);
linemysql =破灭("','",$ linearray);
如果(元addauto)
$查询=“插入databasetable(元columnsql)值('$ linemysql ');";
其他
$查询=“插入databasetable(元columnsql)值('$ linemysql ');";
$查询.= $查询。 “\ N”;
@请求mysql_query($查询);
}
是你想导入的文件有多大?
在任何情况下,尝试最初的开放标签之后加入以下行:
set_time_limit(300);
这将使脚本长达5分钟的执行时间(300秒)。
更换0 300将允许它需要采取尽可能多的时间。
您好,很好的脚本感谢。 当运行它,我得到:
致命错误:30秒的最长执行时间超过了上线63
是否有什么我可以做来解决这个问题呢?
罗比,感谢你除了,这是相当欢迎。 不幸的是,它不会马上工作,当我把它复制。 我认为缺少的东西,因为代码是分布在这两个职位。
你能检查代码显示在这里呢? 缺了什么?
布拉德,如果你已经下载,比上周早些时候,取代“<?”与“<?PHP”(删除空格)在顶部
我得到的第一次有这么多切断,剩下的只是在我的浏览器的代码。 我知道PHP本身工作正常,因为其他网站的作品。
我没有升级到PHP5这个问题呢?
)
/ /跳过,因为它属于坏的数组元素内
其他
$ newarray [$ Y] = str_replace ('"',",$ linearray [$ Y]);
美元linearray = array_values(元newarray); / /复位键到新的数组
$ X + +;
}
}
}
那么,这里的修复我以前的评论:
之间插入:
美元linearray =爆炸(fieldseparator,$行);
...插入下面的代码片段。
linemysql =破灭("','",$ linearray);
查找,并保持前爆“的东西,更多的东西”。
$ A =“”;
$ B =“”;
qoutecount = 0;
($ x = 0的; $ X -1){
美元qoutecount +;
如果(元qoutecount == 1)
$ A = $ X; / /存储一审
ELSEIF($ qoutecount == 2){
quotecount = 0;
$ B = $ X; / /存储二审
/ /它编译成从$ A $ B $ a的所有元素和忽略的元素后,任何一个新的数组$ B;
$ Newa酒店=“”; / /初始化新的字符串。
($ Z = $ A $ Z $&$ Y
不考虑如此行的字段:
FNAME,LNAME,“公司,公司”,市,州,邮编
公司和公司获得分成两个不同的列。
Rengaraj,
csv文件,应在同一个地方的PHP文件。
此外,你不会真的有使用相同的CSV文件的名称。
bbqrest.csv就是一个例子,替换为自己的这个文件的名字。
任何一个可以答复快,我在正确的路径(根)一个CSV文件bbqrest.csv ..
我收到此错误文件未找到。 确保您指定正确的路径。
这将是一个好主意,添加防止从被提交到数据库内的CSV头。 或创建一个脚本,翻出的第一行和列名中使用这些值创建一个DB。
史蒂夫,
您将这个脚本放到一个web访问的文件夹后,改变需要改变的变量。 阅读脚本的意见,找出你需要指定。 然后,调用脚本在Web浏览器,如:
https://www.example.com/path-to-script/simplescvimport.php
总新手 - 撕裂了我的头发,试图导入到phpMyAdmin的(在Mac上)的Excel CSV。 很想知道究竟在何处,我这个PHP脚本... ...?
哇凉的... ...读你的编码后的想法... ...感谢很多
Pingback: CSV导入
Pingback: 一个逗号分隔的文件导入到MySQL的一个PHP脚本|电子商务及搜索引擎优化
您好,自动递增值小的修改,在第1列(ID字段)
见变量$ count。
法定语文事务署,恩里科。
/ / $ CON = @ MYSQL_CONNECT(美元databasehost,美元databaseusername美元DATABASEPASSWORD)或死亡(mysql_error());
/ / @ mysql_select_db(数据库名)或死亡(mysql_error());
$行= 0;
$查询=“”;
美元linearray =阵列();
$计数= 0;
FOREACH(分割(美元lineseparator,美元csvcontent)$行){
$计数= $ COUNT + 1;
$ +;
$行= TRIM($行的“\ t”);
$行= str_replace ("'"," \'“,$行);
美元linearray =爆炸(fieldseparator,$行);
linemysql =破灭("','",$ linearray);
$查询=“插入`你的db表`VALUES('$计数”,“$ linemysql ');";
$查询.= $查询。 “\ N”;
@请求mysql_query($查询);
}
/ / @ mysql_close(CON);
Pingback: 转换CSV到SQL使用PHP编码垫:编程博客,讨论,教程,资源
感谢了很多保存大量的时间! 尼斯脚本。
我通常使用phpMyAdmin,但真实的,情况下不安装它,并没有shell访问(最喜欢的共享托管服务提供商),这样可以非常方便。
非常有用,谢谢你。