สคริป PHP เพื่อนำเข้าข้อมูลใน MySQL csv
นี่คือสคริปต์ง่ายๆที่จะช่วยให้คุณสามารถนำเข้าข้อมูลลงในฐานข้อมูลของคุณ csv นี้มาเป็นประโยชน์เพราะคุณสามารถแก้ไขเขตข้อมูลที่ต้องการจากนั้นอัปโหลดไปพร้อมกับไฟล์ CSV และเรียกว่ามาจากเว็บและจะดำเนินการส่วนที่เหลือ
จะช่วยให้คุณสามารถระบุตัวคั่นในแฟ้ม csv นี้ไม่ว่าจะเป็นอาการสาหัสและอื่น ๆ แท็บนอกจากนี้ยังช่วยให้คุณสามารถเลือกแยกสายช่วยให้คุณสามารถบันทึกการส่งออกไปยังแฟ้ม (ที่เรียกว่าการถ่ายโอนข้อมูล SQL)
นอกจากนี้ยังให้คุณสามารถรวมเขตข้อมูลที่ว่างเปล่าที่จุดเริ่มต้นของแต่ละแถวซึ่งโดยปกติจะเป็นเลขที่เพิ่มขึ้นอัตโนมัติคีย์หลัก
สคริปต์นี้จะมีประโยชน์ส่วนใหญ่ถ้าคุณไม่ได้ phpMyAdmin, หรือคุณไม่ต้องการวุ่นวายกับการเข้าสู่ระบบและต้องการแก้ปัญหาการคลิกน้อยหรือคุณเพียง แต่มีคำสั่งให้คนที่แต่งตัวประหลาด
เพียงให้แน่ใจว่าตารางจะถูกสร้างขึ้นแล้วก่อนที่จะพยายามที่จะถ่ายโอนข้อมูล
กรุณาแสดงความคิดเห็นของคุณถ้าคุณมีรายงานข้อผิดพลาดใด ๆ
Great สคริปต์! TNX มาก
ฉันยังไม่ได้คำชื่นชมกับการโพสต์นี้ ... .. ฉันจริงๆฉันประทับใจจากการโพสต์นี้ ... ใด. ผู้สร้างโพสต์ไว้ได้ดีขอบคุณ .. สำหรับการใช้งานร่วมกันของมนุษย์นี้ด้วย
เรา
ใช่ ... thats จริงๆโพสต์ข้อมูล Blogger ใหม่ฉันก็จะแน่ใจว่าข้อมูลที่เป็นประโยชน์สำหรับฉัน ขอบคุณสำหรับการแบ่งปัน
Script งานได้ดีสำหรับฉันสวยมากตามที่เป็นอยู่ ขอบคุณมาก!
Hi ...
ฉันหันปัญหาเมื่อฉันใช้สิ่งนี้แสดงให้เห็นว่ามีข้อผิดพลาด
"เลิกใช้ : ฟังก์ชั่นแยก () มีการเลิกใช้ใน C : \ wamp \ simplecsvimport.php \ test1 \ www ที่ 64 บรรทัด
ไฟล์ไม่สามารถเขียนได้ตรวจสอบสิทธิ์ พบข้อมูลทั้งหมดของ 41 ระเบียนในแฟ้ม csv นี้ "
ตอบ Pls, มีอะไรผิดพลาด!
ขอบคุณล่วงหน้า!
ฉันสับสนจริงๆด้วยรหัสนี้!
แต่ผมเคยลองขึ้น!
BTW, วิธี HTML code หรือสาขาเพื่อเรียกรหัสนี้
ขอขอบคุณผู้นำเข้า csv, ดีมาก
แต่ผมพบว่าปัญหาหนึ่งที่น้อยก็จะทำงานกับไฟล์ CSV ที่มีโครงสร้าง :"field1","field2","field3"ฯลฯ แต่ผม Hava ไฟล์ CSV นี้ : field1; field2; filed3; ฯลฯ
สิ่งเดียวที่ฉันสามารถเปลี่ยนเป็น $ fieldseparator แต่ฉันจะ'บอก'ไฟล์สคริปต์ที่ไม่ได้ใช้"(ตัวคั่นเขตข้อมูล)?
ideia ของฉันถูก ComboBox กับ $ fieldseparator (หรือ และ fielddelimiter ("หรือไม่มีอะไร) อีกหนึ่งกับ $
ขอบคุณล่วงหน้า
ความคิดของวิธีการได้รับบทที่จะทำงานให้กับเขตข้อมูลที่ถูกล้อมรอบด้วยเครื่องหมายคำพูดเพื่อให้ฟิลด์ที่มีเครื่องหมายจุลภาคในพวกเขาไม่ได้รับการอ่านเป็นรายการใหม่นี้จะ?
ฉันมีข้อมูลที่มีเครื่องหมายจุลภาคเช่นจำนวนเงินดอลล่าและส่วนความเห็นที่ผู้ใช้อาจใช้เครื่องหมายจุลภาค ฉันต้องการเขตข้อมูลทั้งหมดที่นำเข้าและสคริปนี้ถือว่าพวกเขาเป็นเขตใหม่
Mark @ Cloyd
"ที่อยู่ = ค่านิยม (ที่อยู่)
ฉันได้รับข้อผิดพลาดที่นี่เป็นข้อผิดพลาดในการแยกวิเคราะห์ : ไวยากรณ์ผิดพลาดที่ไม่คาดหมาย'='
@ joofoo
ฉันมีการโหลดรหัสของคุณ แต่ฉันได้รับไม่มีข้อมูลล่าสุดในฐานข้อมูล MySQL ...
CSV ประกอบด้วย :
เฮดเดอ -- ชื่อผู้ใช้>, รหัสผ่าน, ข้อความ, อีเมล, รูปภาพ, วันที่
ROW2 --> Bill, เพื่อน,,,,
เจน>, Gal,,,, -- Row3
Row4 --> ดาวิดบุตร,,,,
และนี่คือโค้ด ...
<? PHP
/ / การตั้งค่าจากแฟ้ม iphonelogin.php ในโฟลเดอร์"ห่างไกล"...
/ * เชื่อมต่อกับ * DB /
/ / เชื่อมโยง $ = mysql_connect ('ronbo.db.6405862.hostedresource.com','ronbo','Pepper0689') or die ('ไม่สามารถเชื่อมต่อกับ DB');
/ mysql_select_db ('ronbo'การเชื่อมโยง $) or die ('ไม่สามารถเลือก DB');
/ / https://www.ihappyapps.com/DataFolder/loader.php
/********************************/
* / รหัสที่ https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * แก้ไขรายการด้านล่างเพื่อสะท้อนให้เห็นถึงค่าที่เหมาะสม
/********************************/
$ databasehost ="dbhost";
$ databasename ="ชื่อ";
$ databasetable ="table";
$ databaseusername"ชื่อผู้ใช้";
$ databasepassword ="รหัสผ่าน";
fieldseparator $ ="";
$ lineseparator ="\ n";
$ csvfile ="spreadsheet.csv";
/********************************/
addauto $ = 1;
/********************************/
$ บันทึก = 0;
$ outputfile"output.sql";
/********************************/
if (! file_exists ($ csvfile)) {
echo"Server มีคำขอของคุณ แต่ไฟล์ CSV ที่คุณต้องการโหลดลงในฐานข้อมูลไม่เป็นปัจจุบัน ... .. \ n";
ออกจาก;
}
$ chunksize = 1 * (1024 * 1024);
$ file = fopen ($ csvfile,"RB");
if (! $ แฟ้ม) {
echo"ข้อผิดพลาดในการเปิดแฟ้มข้อมูล \ n.";
ออกจาก;
}
$ size = ขนาดไฟล์ ($ csvfile);
if (! $ ขนาด) {
echo"ไฟล์ว่าง \ n.";
ออกจาก;
}
$ con = @ mysql_connect ($ databasehost, $ databaseusername, databasepassword $) or die (mysql_error ());
@ mysql_select_db ($ databasename) or die (mysql_error ());
สาย $ = 0;
แบบสอบถาม $ ="";
ในขณะที่ (! feof ($ ไฟล์)) {
$ csvline = fgets ($ ไฟล์, $ chunksize);
สาย $ + +;
if ($ สาย <2) ต่อไป;
$ = ตัดบรรทัด ($ csvline,"t \");
บรรทัด $ = str_replace ("\ r ","",$ บรรทัด);
/************************************************* ************************************************** *********
บรรทัดนี้จะหนีอักขระพิเศษ ลบออกถ้ามีรายการที่จะหนีอยู่แล้วในไฟล์ CSV
************************************************** ************************************************** ********/
$ สาย ("'"," str_replace = \'", $ บรรทัด);
/************************************************* ************************************************** ********/
$ linearray = ระเบิด ($ fieldseparator, $ บรรทัด);
$ = linearray ("','",$ linemysql ระเบิดใน);
$ แบบสอบถามแทรก"= เป็นค่า databasetable $ ('$ linemysql ');";
if ($ บันทึก) $ แบบสอบถาม .= $ แบบสอบถาม "\ n";
@ mysql_query ($ แบบสอบถาม);
บรรทัด $ echo"\ n".;
}
เปลี่ยนชื่อ ($ ไฟล์);
สาย $ -= 3;
@ mysql_close ($ con);
> <
ผมสามารถใช้ช่วยบางส่วนในการได้รับนี้ในการทำงาน ...
รอน
@ รอย
ผมแก้ไขสคริปต์ของคุณเพื่อให้มันกินหน่วยความจำน้อยกว่ามากเมื่อการประมวลผลไฟล์ขนาดใหญ่ (มันตีหน่วยความจำ จำกัด PHP เมื่อฉันพยายามที่จะใช้ในไฟล์ CSV 100MB) การเปลี่ยนแปลงมีดังนี้
$chunksize = 1*(1024*1024);
$file = fopen($csvfile,"rb");
if(!$file) {
echo "Error opening data file.\n";
exit;
}
$ size = ขนาดไฟล์ ($ csvfile);
if (! $ ขนาด) {
echo"ไฟล์ว่าง \ n.";
ออกจาก;
}
$ con = @ mysql_connect ($ databasehost, $ databaseusername, databasepassword $) or die (mysql_error ());
@ mysql_select_db ($ databasename) or die (mysql_error ());
สาย $ = 0;
แบบสอบถาม $ ="";
ในขณะที่ (! feof ($ ไฟล์)) {
$ csvline = fgets ($ ไฟล์, $ chunksize);
สาย $ + +;
if ($ สาย <2) ต่อไป;
$ = ตัดบรรทัด ($ csvline,"t \");
บรรทัด $ = str_replace ("\ r ","",$ บรรทัด);
/************************************************* ************************************************** *********
บรรทัดนี้จะหนีอักขระพิเศษ ลบออกถ้ามีรายการที่จะหนีอยู่แล้วในไฟล์ CSV
************************************************** ************************************************** ********/
$ สาย ("'"," str_replace = \'", $ บรรทัด);
/************************************************* ************************************************** ********/
$ linearray = ระเบิด ($ fieldseparator, $ บรรทัด);
$ = linearray ("','",$ linemysql ระเบิดใน);
$ แบบสอบถามแทรก"= เป็นค่า databasetable $ ('$ linemysql ');";
if ($ บันทึก) $ แบบสอบถาม .= $ แบบสอบถาม "\ n";
@ mysql_query ($ แบบสอบถาม);
บรรทัด $ echo"\ n".;
}
เปลี่ยนชื่อ ($ ไฟล์);
สาย $ -= 3;
@ mysql_close ($ con);
ขอขอบคุณ
@ Khaled
ฉันจะส่งออก UTF8 Excel เพื่อ output.sql
ขอบคุณ
ฉันพยายามสคริปต์ แต่ output.sql จะแต่งเรื่องแปลก
ใส่ลงในค่า test_excel ('พีเค |?????? ถาม K5 K5 q Q q Q q K5 ...
ต้องการสิ่งเหล่านี้
ฉันจะแก้ไขปัญหานี้ ทุกรูปแบบที่พิเศษสำหรับ Excel แผ่น?
Hi guys, แค่อยากจะให้คุณทุกคนรู้ว่าฉันได้พบใครบางคนเขียนฉันโปรแกรมที่เกิดขึ้นจริงที่ฉันต้องการ
@ วอร์เรน
/********************************/
ไฟล์นี้มีการเปลี่ยนแปลงหลายพยายามทำโดยวอร์เรน (ไม่ได้เขียนโปรแกรม) ที่ 28 ธันวาคม 2010 เป็นต้นไปขึ้นอยู่กับความเห็นที่เว็บไซต์และแหล่งข้อมูลอื่น ๆ เพื่อให้โครงการนี้เป็นหนึ่งที่เขาต้องการ นี้จะไม่สมบูรณ์มาก ความช่วยเหลือมีความนิยมมากที่สุดและจำเป็นอย่างมาก
สายเพิ่มในการสร้างกล่องใส่สำหรับเว็บไซต์ชื่อฐานข้อมูลและรหัสผ่าน ฯลฯ URL
/********************************/
ยินดีต้อนรับสู่ Server Upload ยูทิลิตี้
โปรแกรมนี้จะเรียกใช้จากคอมพิวเตอร์ของคุณเพื่อใส่สองตารางว่างใน MySQL ใหม่ฐานข้อมูลบนเว็บไซต์ของคุณโดย : อัปโหลดแต่ละไฟล์น้อยชื่อนามสกุล, ที่มีหมายเลขที่ไม่ซ้ำหน้าเป็นตัวนับเพื่อ keywords_categories ตารางแล้วจากนั้นจะกำหนด 1 จำนวน ในคอลัมน์ที่ว่างอยู่หน้า colum แรกของข้อมูลจากแฟ้มนั้นและเพิ่มจำนวนหนึ่งสำหรับการประมวลผลที่ตามมาแต่ละไฟล์จากไดเรกทอรีที่เพื่อให้จำนวน assigend ไปที่ชื่อหมวดหมู่ในตารางที่ตรงกับคำหลักเป็นของมันที่มี อัปโหลดแล้วกับคำหลักของตาราง
นี้จะกระทำสำหรับทุกไฟล์ CSV ในไดเรกทอรีที่ระบุถึงของคุณ
มันจะไม่สนใจแรกห้าบรรทัดในไฟล์ CSV ของคุณ
URL เว็บไซต์ :
Database Name :
ชื่อผู้ใช้ฐานข้อมูล :
รหัสผ่านฐานข้อมูล :
เส้นทางของไดเรกทอรีที่มีไฟล์ที่จะอัพโหลด :
/********************************/
คำถาม
ฉันจะได้รับข้อมูลข้างต้นจากกล่องใส่ลงในโปรแกรมอย่างไรเพื่อให้ตรงกับที่ต้องการด้านล่างนี้?
/********************************/
<? PHP
/********************************/
Line เพิ่มเพื่อป้องกันไม่ให้หมดเวลากับแฟ้มขนาดใหญ่
/********************************/
set_time_limit (0);
/********************************/
รับไฟล์ชื่อของไฟล์ที่ต้องดำเนินการให้เอาส่วนขยายของชื่อไฟล์แล้วใช้พวกเขาจะอัปโหลดเป็นชื่อประเภทเพื่อ keywords_categories ตาราง
/********************************/
/********************************/
ลบไฟล์ extentions ชื่อ
คัดลอกมาจาก perlmonks www org /? node_id = 151,232
/********************************/
{parse_out_extension ย่อย
die ("ไม่มีชื่อไฟล์เพื่อแยกวิเคราะห์ n \.") ถ้า (_ @!)
ของฉัน ($ แฟ้ม) = @ _;
ของฉัน @ ชิ้น;
{แผนที่ดัน (@ ชิ้น, $ _)} split (/ \ /, ไฟล์ $.)
สุดป๊อปของฉัน $ = (ชิ้น @);
$ file = ~ s / \ $ / วางสาย /.;
กลับมา ($ ไฟล์) ไฟล์ถ้า $;
/********************************/
/ * รหัสเดิมที่ https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * แก้ไขรายการด้านล่างเพื่อสะท้อนให้เห็นถึงค่าที่เหมาะสม
/********************************/
$ databasehost ="localhost";
$ databasename ="test";
$ databasetable ="ตัวอย่าง";
$ databaseusername ="test";
$ databasepassword ="";
fieldseparator $ ="";
$ lineseparator ="\ n";
$ csvfile ="filename.csv";
/********************************/
/ * คุณต้องการเพิ่มเขตข้อมูล ampty ที่จุดเริ่มต้นของระเบียนเหล่านี้ได้หรือไม่
หมายเหตุ * / โดยวอร์เรนในกรณีที่คำหลักซึ่งเป็นคอลัมน์แรกของข้อมูลในแต่ละไฟล์ไว้เป็นไฟล์โดยแต่ละไฟล์นี้ coum สถานที่ใหม่เปล่า frot ดินของคำหลักจะต้องมีการเปลี่ยนแปลงดังนั้นจึงจับหมายเลขที่กำหนดให้ ชื่อประเภทที่ถูกสร้างขึ้นจากชื่อไฟล์น้อยนามสกุลและสถานที่ในคอลัมน์แรกใหม่นี้ว่างเปล่า
/ * นี้จะเป็นประโยชน์ถ้าคุณมีตารางที่มีเขตข้อมูลแรกเป็นจำนวนเต็ม auto_increment หมายเหตุโดยวอร์เรน นี่คือสิ่งที่ถูกต้องในกรณีของไฟล์ exteniosn น้อยชื่อที่มี upoaded เพื่อ keywords_categories ตาราง
/ * และไฟล์ csv ไม่ได้เช่นเขตข้อมูลที่ว่างเปล่าก่อนที่จะบันทึก
/ * ชุดที่ 1 สำหรับใช่และ 0 ไม่ ความสนใจ : ทำไม่ได้ตั้งค่าเป็น 1 หากคุณไม่แน่ใจว่า
/ * นี้สามารถถ่ายโอนข้อมูลในเขตข้อมูลที่ไม่ถูกต้องถ้านี้เขตพิเศษไม่อยู่ในตาราง หมายเหตุโดยวอร์เรนอาจไม่จำเป็นต้องใช้ไฟล์นี้ แต่กรณีของฉันฉันเดาเท่านั้นในส่วนของฉัน แต่ไม่จำเป็นต้องดูต้องถ้ามี
/********************************/
addauto $ = 1;
/********************************/
/ * คุณต้องการที่จะบันทึกแบบสอบถาม MySQL ในแฟ้ม? หากการตั้งค่าใช่ $ ประหยัดถึง 1
/ การอนุญาต * ในแฟ้มควรตั้งค่าเป็น 777 ไม่ว่าจะอัปโหลดไฟล์ตัวอย่างผ่าน FTP และ
/ * เปลี่ยนสิทธิ์หรือดำเนินการที่พรอมต์ : output.sql สัมผัส & & chmod 777 output.sql
/********************************/
$ บันทึก = 0;
$ outputfile"output.sql";
/********************************/
if (! file_exists ($ csvfile)) {
echo"ไม่พบแฟ้ม ให้แน่ใจว่าคุณระบุเส้นทางที่ถูกต้อง \ n".;
ออกจาก;
}
$ file = fopen ($ csvfile,"r");
if (! $ แฟ้ม) {
echo"ข้อผิดพลาดในการเปิดแฟ้มข้อมูล \ n.";
ออกจาก;
}
$ size = ขนาดไฟล์ ($ csvfile);
if (! $ ขนาด) {
echo"ไฟล์ว่าง \ n.";
ออกจาก;
}
$ csvcontent = fread ($ ไฟล์, $ ขนาด);
เปลี่ยนชื่อ ($ ไฟล์);
$ con = @ mysql_connect ($ databasehost, $ databaseusername, databasepassword $) or die (mysql_error ());
@ mysql_select_db ($ databasename) or die (mysql_error ());
/********************************/
เพื่อหลีกเลี่ยงการใส่สี่แถวแรกของ adveristing ข้อความในส่วนหัวและบรรทัดว่าง สายเท่ากับศูนย์รหัสถูกแทนที่ด้วยรหัสต่อไปนี้
/********************************/
สาย $ = 1 (ค่าของตัวนับเป็น 1)
แบบสอบถาม $ ="";
linearray อาเรย์ $ = ();
foreach (split ($ lineseparator, $ csvcontent) เป็น $ บรรทัด) {
$ สาย + + (กำหนดบรรทัดแรก # 2 หัว ()
if ($ สาย> = 5) {(เริ่มต้นที่ # 5 อะไร"สูงกว่าหรือเท่ากับ 5?)
แบบสอบถาม $ ="";
linearray อาเรย์ $ = ();
foreach (split ($ lineseparator, $ csvcontent) เป็น $ บรรทัด) {
สาย $ + +;
$ = ตัดบรรทัด ($ บรรทัด"\ t");
บรรทัด $ = str_replace ("\ r ","",$ บรรทัด);
/************************************
บรรทัดนี้จะหนีอักขระพิเศษ ลบออกถ้ามีรายการที่จะหนีอยู่แล้วในไฟล์ CSV
************************************/
$ สาย ("'"," str_replace = \'", $ บรรทัด);
/*************************************/
$ linearray = ระเบิด ($ fieldseparator, $ บรรทัด);
$ = linearray ("','",$ linemysql ระเบิดใน);
if ($ addauto)
$ แบบสอบถามแทรก"= เป็นค่า $ databasetable (",'$ ');"; linemysql
อื่น
$ แบบสอบถามแทรก"= เป็นค่า databasetable $ ('$ linemysql ');";
แบบสอบถาม $ .= $ แบบสอบถาม "\ n";
/************************************
บิตของรหัสนี้ด้านล่างนี้ถูกบันทึกอยู่ในตอนนี้แสดงข้อความแสดงข้อผิดพลาด
************************************/
$ result = mysql_query ($ แบบสอบถาม);
/ / ตรวจสอบผล
/ / นี้แสดงให้เห็นแบบสอบถามส่งไปยัง MySQL ที่เกิดขึ้นจริงและข้อผิดพลาด เป็นประโยชน์สำหรับการแก้จุดบกพร่อง
if (! $ result) {
ข้อความ $'ค้นหาไม่ถูกต้อง :'= mysql_error () "\ n";
ข้อความ $'แบบสอบถามทั้งหมด :'.= $ แบบสอบถาม;
die ($ ข้อความ)
}
@ mysql_close ($ con);
if ($ ประหยัด) {
if (! is_writable ($ outputfile)) {
echo"ไฟล์ไม่สามารถเขียนได้สิทธิ์ตรวจสอบ n \.";
}
else {
$ file2 = fopen ($ outputfile,"w");
if (! $ file2) {
echo"เกิดข้อผิดพลาดการเขียนไปยังแฟ้มผลลัพธ์ n \.";
}
else {
fwrite ($ file2, $ แบบสอบถาม);
เปลี่ยนชื่อ ($ file2);
}
}
}
echo"พบรวม $ บันทึกบรรทัดในไฟล์ CSV นี้ \ n.";
?>
เพียงแค่การแก้ไขเล็กน้อยเพื่อขอ, สองตารางในฐานข้อมูล MqSQL ผมพูดถึงจะเรียกว่าจริงๆแล้วฉัน :
keywords_categories
คำหลัก
@ วอร์เรน
นอกจากนี้ก็อาจอยากรู้อยากเห็นเพียงแค่ออกมาจากยังประมวลผลไฟล์ txt, (ที่มีเพียงรายชื่อของคำในนั้น) วิธีเดียวกันได้หรือไม่
(ฉันใหม่ที่นี้และรู้ว่าฉันอาจจะถามมากดังนั้นหากใครบางคนอาจจะใช้เวลาน้อยในโครงการนี้สำหรับผมแล้วถ้ามันเป็นไปอย่างเหมาะสมบางทีเราจะได้หารือเกี่ยวกับการจ่ายเงินจำนวนน้อยของฉันสำหรับครั้งของพวกเขาในการเปลี่ยนแปลงไป ตอบสนองความต้องการของฉันได้อย่างไรกรุณาแจ้งให้เราทราบ.)
- My e - mail คือ : wr.spence @ hotmail.com
ผมไม่ได้เขียนโปรแกรม ฉันดูสคริปต์ของคุณและมันอาจจะใกล้เคียงกับสิ่งที่ฉันต้องการหรืออาจจะได้รูปแบบพื้นฐานของสิ่งที่ฉันต้องการที่ฉันไม่แน่ใจว่า
ฉันจำเป็นต้องดำเนินการเหมือนกันฟังก์ชั่นการอัปโหลดซ้ำแล้วซ้ำอีก แต่จากไดเรกทอรีย่อยที่แตกต่างกันเวลาจากฮาร์ดไดรฟ์ของฉันแต่ละครั้งสำหรับรายชื่อของไฟล์ csv, และเวลาที่แตกต่างกัน MySQL DB (ในเว็บไซต์ differret แต่ละครั้ง) ในแต่ละ ในกรณีส่วนใหญ่ดีบีจะไม่มีข้อมูลใด ๆ ในนั้น แต่มันจะเหมาะ (แต่ไม่จำเป็น) ถ้าสคริปยังคงสามารถทำงานร่วมกับฐานข้อมูลที่ได้มีข้อมูลโดยไม่ต้องมีผลกระทบต่อข้อมูลที่มีอยู่)
ฉันต้องการมันเพื่อเข้าสู่ฐานข้อมูลบนเซิร์ฟเวอร์ (ควรถามผมสำหรับ URL ของเว็บไซต์และชื่อผู้ใช้ฐานข้อมูลและรหัสผ่านและอื่น ๆ )
ฉันต้องการสิ่งที่ช่วยให้ผมเรียกดูและเลือกชื่อไดเรคทอในฮาร์ดดิสก์ของฉันหรือใส่มัน
จากนั้นก็จะประมวลผลไฟล์แต่ละ csv ในไดเรกทอรีที่หนึ่งหลังจากที่อื่น ๆ ดังต่อไปนี้
ในแต่ละไฟล์ฉันต้องการให้มันแรกใช้ชื่อไฟล์ (น้อยส่วนขยาย) และอัปโหลดไปยังฐานข้อมูลในประเภทตาราง ตารางที่มีคีย์เลขที่ได้รับมอบหมายจากนั้นไปที่ชื่อที่
ฉันจึงจำเป็นต้องสคริปเพื่ออัปโหลดเท่านั้น colum คำ (1 colum ของข้อมูล) ของแฟ้มคำตารางที่และเพิ่ม nubmer ที่ตรงกันสำหรับชื่อประเภทจากไฟล์แรก
ควรสังเกตว่าแฟ้ม CSV มักจะมีสามบรรทัดของข้อความส่วนหัวและบรรทัดว่างทั้งสี่ที่ฉันต้องการละเว้นและไม่ได้อัปโหลด บ่อยครั้งที่มีบรรทัดว่างที่ eend Te ของไฟล์ฉันยังต้องการให้ละเว้นเหล่านั้นรวมทั้งคอลัมน์อื่น ๆ ไม่สนใจใด ๆ ที่อาจจะหรือไม่อาจจะอยู่ในไฟล์ CSV ในบางกรณีไฟล์ CSV อาจไม่ได้มีส่วนหัวหรือคอลัมน์อื่น ๆ
จากนั้นไฟล์ต่อไปจนกว่าจะหมดไฟล์ในไดเรกทอรี
แล้วฉันจะชอบมันจะบอกฉัน"เสร็จสิ้นขั้นตอน."และถ้าเกิดข้อผิดพลาดใด ๆ ที่จะบอกฉัน
สามารถใด ๆ ของพวกคุณช่วยฉันด้วยหรือไม่
ขอบคุณสำหรับการแบ่งปัน Excel เพื่อ MySQL สคริปต์นี้เป็นประโยชน์อย่างมากกับผม
การทำงานของรหัสยา แต่ NW น. ได้รับข้อมูลของฉันใส่ไว้ในเครื่องหมายจุลภาคกลับ @ Suman
@ pruthvi
สวัสดีครับ
โปรดใช้รหัสที่กำหนดตะโกน ... ...
เกรทรหัสมันจริงๆที่เป็นประโยชน์กับทุกผู้พัฒนา PHP
คุณสามารถอธิบายรหัสของคุณที่คุณต้องการแทนที่ @ mysql_query ($ แบบสอบถาม) กับ U งบให้ แต่จะมีการแสดงข้อผิดพลาดข้อความ $ หาค่าไม่ได้ แอนดรูปลา @
ปัญหาเดียวกันกับผม ปลาแอนดรู @
การพัฒนาล่าสุดสามารถตรวจจับรหัสไม่บรรทัดในไฟล์ csv แต่ไม่ได้แสดงในตารางของมันแล้ว
รหัสกำลังส่งคืนงบที่ couldnt ค้นหาไฟล์ csv ...
วัดอาจจะมีปัญหา ...
เอาล่ะพบปัญหา ฉันมี mispelt ชื่อตาราง เพียง แต่พบปัญหาเมื่อผมได้เพิ่มโค้ดต่อไปนี้ที่จะทำให้เกิดข้อผิดพลาดถ้า SQL ไม่ ขณะนี้สคริปไม่ได้บอกว่ามีปัญหาได้รับการ
ดังนั้นเปลี่ยนสาย
@ mysql_query ($ แบบสอบถาม);
ทั้งหมดต่อไปนี้ : --
$ result = mysql_query ($ แบบสอบถาม);
/ / ตรวจสอบผล
/ / นี้แสดงให้เห็นแบบสอบถามส่งไปยัง MySQL ที่เกิดขึ้นจริงและข้อผิดพลาด เป็นประโยชน์สำหรับการแก้จุดบกพร่อง
if (! $ result) {
ข้อความ $'ค้นหาไม่ถูกต้อง :'= mysql_error () "\ n";
ข้อความ $'แบบสอบถามทั้งหมด :'.= $ แบบสอบถาม;
die ($ ข้อความ)
หวังว่าจะช่วยใครสักคน มันไม่ฉัน
AJ
ปลาแอนดรู @
เมื่อผมเรียกใช้สคริปต์ใช้ csv ซึ่งฉันรู้ว่านำเข้าอย่างถูกต้องโดยใช้ PHP การดูแลระบบนี้สคริปต์ทำงานให้รายงานตัวเลขให้ถูกต้องของแถวที่มีข้อความ"พบข้อมูลทั้งหมดของ 193 ระเบียนในแฟ้ม csv นี้."แต่ไม่มีข้อมูลใดที่ปรากฏใน ตาราง ฉันได้ดำเนินการเปลี่ยนแปลงเพื่อ csv เพื่อที่ฉันสามารถดูได้ว่าข้อมูลจะถูกใส่ลงไปในตารางและยังไม่ได้ ความคิดใด?
AJ
นำเข้าไฟล์ของฉัน CSV นอกจากนี้ยังมีเครื่องหมายคำพูดคู่รอบทุกสาขา (ส่วนใหญ่เพื่อหลีกเลี่ยงปัญหาหากฉันจำเป็นต้องนำเข้ามาใน Excel เพื่อไม่ทำให้เสียข้อมูล) ดังนั้นฉันมีปัญหาที่มันเป็นแทรกระเบียนด้วยเครื่องหมายคำพูดรอบข้อมูลนี้ ผมปล้นทุกคำพูดคู่โดยการเพิ่มบรรทัดนี้
สาย str_replace $ = (เส้น"\ "","",$);
หลังจากบรรทัดนี้
บรรทัด $ = str_replace ("\ r ","",$ บรรทัด);
และสายใหม่จะแทนที่เครื่องหมายคำพูดคู่กับอะไร มันเป็นเส้นเดียวกันก่อนที่จะยกเว้นก็ลบ \"แทน r \ (เครื่องหมายคำพูดแทนการส่งกลับสายการบิน)
@ neady
โปรแกรมน้อยมาก
มีวิธีการแทนที่ข้อมูลในเซลล์เช่น 'เมือง'ใน csv และเปลี่ยนเป็นค่าจากหน้าก่อนหน้าเช่น _SESSION $ หรือค่า _POST $?
นี้ดีมาก ... ง่ายมากที่จะใช้ ตอนนี้น่ะมันคิดออกว่าจะใช้สคริปต์นี้หรือคล้ายกับอัปโหลด. xls ไฟล์พร้อมกับ. ไฟล์ CSV
@ ไมค์
คุณสามารถลองเพิ่ม :
set_time_limit (0);
ขวาที่จุดเริ่มต้นหรือไม่ (ขวาหลังจากที่แท็กเปิด php)
@ สอนพิเศษ
มีวิธีการได้สร้างมันไม่หมดเวลา? มันใช้งานได้ดีกับ 100k ระเบียน แต่เมื่อฉันไปสำหรับบางสิ่งบางอย่างใหญ่เช่นล้านบาทขึ้นไปทำงานประมาณ 20 วินาทีจากนั้นไปที่หน้าจอว่างเปล่าและโฆษณาระเบียน no.? ขอขอบคุณ
มีปัญหาเดียวกันแน่นอนทุกคนสามารถช่วยได้มั้ย
เพื่อน HI,
ฉันต้องการความช่วยเหลือเร่งด่วนจากคุณ ... ดังนั้นกรุณาช่วยฉันที่นี่เป็นรหัส ...
เตรียมไฟล์ HTML แต่ผมต้องแก้ปัญหา PHP ... กรุณาช่วยสำหรับฉัน ... ... ..
ส่ง SMS
รับจำนวนมือถือ :
+91
สมุดโทรศัพท์
Upload Excel ไฟล์ :
<!-->
พิมพ์ข้อความที่ <="ไฟล์"name ="ไฟล์"class = onchange"file_input_hidden ="JavaScript": document.getElementBy
Sender ID :
:
YOGA
GRAFS
Mobitel
frmvalidator = var ใหม่ validator ('freesms2');
frmvalidator.addValidation ("frno","Req","ป้อนหมายเลขโทรศัพท์มือถือ");
frmvalidator.addValidation ("frno","NUM","เขตหมายเลขโทรศัพท์มือถือควรมีเบอร์");
frmvalidator.addValidation ("frno","minlength = 10000","หมายเลขโทรศัพท์มือถือควรจะ 10000 หลัก");
frmvalidator.addValidation ("message3","Req","ป้อนข้อความ SMS");
ด้วยความนับถือ
Ravi Kumar
<? PHP
$ newbal = '0';
รวมถึง"conn.php";
if (isset ($ _POST ['submit']))
{
$ filename = $ _POST ['filename'];
$ จัดการ = fopen ("$ filename","r");
ในขณะที่ (($ ข้อมูล fgetcsv = ($ จัดการ, 1000, ","))! == FALSE)
{
$ sql5 = mysql_query ("* เลือกจากรายการที่รายการ ='ข้อมูล $ [0 ]'");
$ num = mysql_num_rows ($ sql5);
if ($ == 0 NUM)
{
$ นำเข้า ="INSERT INTO ค่า (รายการ gweight, dweight) รายการ ('ข้อมูล $ [0 ]','$ ข้อมูล [1 ]','$ ข้อมูล [2 ]')";
mysql_query ($ นำเข้า) หรือตาย (mysql_error ());
}
else {
echo"$ ข้อมูล [0] ออกจาก";
}
}
เปลี่ยนชื่อ ($ จัดการ);
พิมพ์"นำเข้าทำ";
}
อื่น
{
?>
ชื่อชนิดของไฟล์ที่จะนำเข้า :
วันที่
setIcon ("ภาพ iconCalendar.gif /");
setDate $ myCalendar -> (วันที่ ('d'), วันที่ ('M'), วันที่ ('Y'));
$ myCalendar -> ("./"); setPath
$ myCalendar -> setYearInterval (2010, 2020);
$ myCalendar -> dateAllow ('2008 - 05 - 13', '2020 - 12 - 31');
setDateFormat $ myCalendar -> ('Y / m / d');
$ myCalendar -> writeScript ();
?>
มันทำงานได้ดีเมื่อผมอัปโหลดไฟล์ CSV ใน localhost แต่แสดงข้อผิดพลาดไฟล์หายไปเมื่อทำงานใน server.please ช่วยฉันขอขอบคุณล่วงหน้า
ฉันคิดว่านี่คือที่ดีที่สุดสำหรับรถเข็นของ csv ลงใน SQL
Le doy kaundo descarga ฉัน aparecen muchos รหัสไปรษณีย์ todos los archivos en los ubico โซล่า una carpeta? ¿
@ zeshan
ใช้ระเบิดแทนการแยก
เลิกใช้ : แยกฟังก์ชั่น () มีการเลิกใช้ใน E : \ wamp \ www \ floodpk2 \ simplecsvimport.php \ admin เมื่อ 63 บรรทัด
ไฟล์ไม่สามารถเขียนได้ตรวจสอบสิทธิ์ พบข้อมูลทั้งหมดของ 1498 ระเบียนในแฟ้ม csv นี้
Plz ช่วยฉันอย่างเร่งด่วน
8pills.com สามารถหยุดการแก้ปัญหาสุขภาพของคุณหนึ่งดูแล 8pills.com ให้ยาที่ดีที่สุดของชั้นเรียนทั่วไปและมีตราสินค้า
ฉันหันหน้าไปทางด้านล่าง - แจ้งให้ทราบล่วงหน้า
wamp \ \ www \ New Folder (2) \ exl8.php ในวันที่ 20 บรรทัด : หมายเหตุ : ไม่ได้กำหนดชดเชย : 1 ใน C
wamp \ \ www \ New Folder (2) \ exl8.php ในวันที่ 20 บรรทัด : หมายเหตุ : ไม่ได้กำหนดชดเชย : 2 ใน C
wamp \ \ www \ New Folder (2) \ exl8.php ในวันที่ 20 บรรทัด : หมายเหตุ : ไม่ได้กำหนดชดเชย : 2 ใน C
นี้ทำงานได้เป็นอย่างดี ขอขอบคุณ!
นี่คือรหัส BTW,
$ databasehost ="localhost";
$ databasename ="ฐานข้อมูล";
$ databasetable ="table";
$ databaseusername ="admin";
$ databasepassword ="admin";
fieldseparator $ ="";
$ lineseparator ="\ n";
$ csvfile ="https://linktosite/";
addauto $ = 0;
$ บันทึก = 0;
$ outputfile ="output.sql"; / / ถ้าบันทึกอยู่ใน (1)
$ file = fopen ($ csvfile,"RB");
csvcontent $ = stream_get_contents ($ ไฟล์);
เปลี่ยนชื่อ ($ ไฟล์);
$ con = @ mysql_connect ($ databasehost, $ databaseusername, databasepassword $) or die (mysql_error ());
@ mysql_select_db ($ databasename) or die (mysql_error ());
สาย $ = 0;
แบบสอบถาม $ ="";
linearray อาเรย์ $ = ();
foreach (split ($ lineseparator, $ csvcontent) เป็น $ บรรทัด) {
สาย $ + +;
$ = ตัดบรรทัด ($ บรรทัด"\ t");
บรรทัด $ = str_replace ("\ r ","",$ บรรทัด);
/************************************
บรรทัดนี้จะหนีอักขระพิเศษ ลบออกถ้ามีรายการที่จะหนีอยู่แล้วในไฟล์ CSV
************************************/
$ สาย ("'"," str_replace = \'", $ บรรทัด);
/*************************************/
$ linearray = ระเบิด ($ fieldseparator, $ บรรทัด);
$ = linearray ("','",$ linemysql ระเบิดใน);
if ($ addauto)
$ แบบสอบถามแทรก"= เป็นค่า $ databasetable (",'$ ');"; linemysql
อื่น
$ แบบสอบถามแทรก"= เป็นค่า databasetable $ ('$ linemysql ');";
แบบสอบถาม $ .= $ แบบสอบถาม "\ n";
@ mysql_query ($ แบบสอบถาม);
}
@ mysql_close ($ con);
if ($ ประหยัด) {
if (! is_writable ($ outputfile)) {
echo"ไฟล์ไม่สามารถเขียนได้สิทธิ์ตรวจสอบ n \.";
}
else {
$ file2 = fopen ($ outputfile,"w");
if (! $ file2) {
echo"เกิดข้อผิดพลาดการเขียนไปยังแฟ้มผลลัพธ์ n \.";
}
else {
fwrite ($ file2, $ แบบสอบถาม);
เปลี่ยนชื่อ ($ file2);
}
}
}
echo"พบรวม $ บันทึกบรรทัดในไฟล์ CSV นี้ เพิ่มลงใน DB \ n".;
สวัสดีครับ
ฉันจะใช้สคริปต์นี้จะนำเข้า csv datafeed เพื่อ MySQL
ปัญหาเดียวที่ฉันมีเป็นว่าคำพูด""นอกจากนี้ยังได้รับการแทรกอยู่ในตารางของฉัน
ตัวคั่น :, (komma)
Enclosure :"(aanhalingsteken)
สายใหม่ : \ r \ n
การทำงาน Nice!
ฉันเพิ่งจะมีคำถาม
เป็นไปได้ที่จะใช้ตัวอักษรมากขึ้นในการระเบิดคอมมานโดในสคริปต์?
ฉัน allso จำเป็นต้องมีการแยกด้วย และ;
ขอบคุณมากถ้าร่างกายบางส่วนมีความคิดใด ๆ !
ผมใช้รหัสนี้ ... ... ... มันง่ายเกินไปที่จะใช้มันในเว็บไซต์ของฉัน ... ..
.. ขอบคุณมาก
ฉันต้องการบางรหัสเพิ่มเติมสำหรับ PHP ... ...
เมื่อต้องการแปลงหน้าในรูปแบบไฟล์ PDF ...
สวัสดีครับ
รับข้อผิดพลาดนี้ วิธีการแก้ปัญหานี้หรือไม่
ข้อผิดพลาด :
ไฟล์ไม่สามารถเขียนได้ตรวจสอบสิทธิ์ พบข้อมูลทั้งหมดของ 13 ระเบียนในแฟ้ม csv นี้
ขอขอบคุณ
Haan
อืมม .. ผมได้รับข้อผิดพลาดเช่นนี้"ไฟล์ไม่สามารถเขียนได้สิทธิ์ตรวจสอบ พบข้อมูลทั้งหมดของ 2 ระเบียนในแฟ้ม csv นี้."ความคิดที่ผิดปกติใด ๆ
อืมม .. ผมได้รับข้อผิดพลาดเช่นนี้"ไฟล์ไม่สามารถเขียนได้สิทธิ์ตรวจสอบ พบข้อมูลทั้งหมดของ 2 ระเบียนในแฟ้ม csv นี้."ความคิดที่ผิดปกติใด ๆ
หากต้องการข้ามบรรทัดแรก / ซึ่งเป็นส่วนหัวแถวในไฟล์ CSV ทำเช่นนี้ :
... ..
if ($> 1 เส้น) {
if ($ addauto)
$ แบบสอบถามแทรก"= เป็นค่า $ databasetable (",'$ ');"; linemysql
อื่น
$ แบบสอบถามแทรก"= เป็นค่า databasetable $ ('$ linemysql ');";
แบบสอบถาม $ .= $ แบบสอบถาม "\ n";
@ mysql_query ($ แบบสอบถาม);
}
ฉันได้สคริปต์นี้ทำงานที่ดีภายใต้โดเมนที่แตกต่างกัน จากนั้นเมื่อผมย้ายมัน, งานการดาวน์โหลดไฟล์ cron csv, เก็บไว้แล้วลบออก แต่ doesn't อัปโหลดไปยัง MySQL เมื่อฉันมองไปที่แฟ้ม import.php และพยายามที่จะเรียกมันว่าฉันได้รับข้อผิดพลาดไม่สามารถหาไฟล์ให้แน่ใจว่าคุณมีเส้นทางที่ถูกต้อง ความช่วยเหลือ
หากคุณต้องการหลีกเลี่ยงการแทรกแถวแรกเพียงแค่เล่นกับเคาน์เตอร์ตัวอย่างเช่น
สาย $ = 1 (ค่าของตัวนับเป็น 1)
แบบสอบถาม $ ="";
linearray อาเรย์ $ = ();
foreach (split ($ lineseparator, $ csvcontent) เป็น $ บรรทัด) {
$ สาย + + (กำหนดบรรทัดแรก # 2 หัว ()
if ($ สาย> = 3) {(เริ่มต้นที่ # 3"สิ่งที่สูงกว่าหรือเท่ากับ 3")
Wonderful สคริปต์ แต่ฉันมีปัญหาในการ reoccurring
หลังจากที่ผมเรียกใช้สคริปต์ก็พบทั้งหมด 1 ระเบียนในแฟ้ม csv นี้."กล่าวว่า
ผมมองย้อนกลับไปในตารางของฉันและมันแสดงให้เห็นว่าง
ฉันจะตรวจสอบเพื่อให้แน่ใจว่ามีตัวเลขทางด้านขวาของคอลัมน์และมี
กรุณาช่วย!
ขอขอบคุณ
Coulton
ถ้าฉันถูก จำกัด ในการเข้าถึงลูกค้า harddrive ผมว่าจะไปอัปโหลดไฟล์ CSV เพื่อ server.for ตัวอย่างเช่นเราสามารถตั้งค่าเริ่มต้นเพื่อควบคุมการอัปโหลดไฟล์
นี้มีประโยชน์มากสำหรับฉัน ... แต่ฉันจำเป็นในการทำให้การปรับเปลี่ยนสำหรับการอ่านในไฟล์ขนาดใหญ่ ผมสับสนในตอนแรก แต่แล้วตระหนักโหลดสคริปไฟล์ทั้งหมดลงในหน่วยความจำ (ใช่ไหม?) ดังนั้นนี่คือรุ่นที่กำหนดเองของโค้ดที่อ่านบรรทัดในหนึ่งครั้ง ก็อ่านในไฟล์ที่มีลักษณะเหมือน
เริ่มไฟล์ :
2,3, -1
1, -2,4
แฟ้มสิ้น (มีค่าอื่น ๆ อีกมากมาย) ฉันต้องการแต่ละบรรทัดจะเข้าตารางและ ID ที่มีหมายเลขบรรทัดเช่นเดียวกับ id แรกคิดเป็นขนาดของตาราง (ซึ่งจะไม่มีการเปลี่ยนแปลงในภายหลัง)
<? PHP
/********************************/
* / รหัสที่ https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * แก้ไขรายการด้านล่างเพื่อสะท้อนให้เห็นถึงค่าที่เหมาะสม
/********************************/
$ databasehost ="localhost";
$ databasename ="tomoku";
$ databaseusername ="root";
$ databasepassword ="root";
$ fieldseparator ="\ n";
$ lineseparator ="\ n";
/ / รหัสนี้อ่านไฟล์ tatami ลงในฐานข้อมูล
$ con = @ mysql_connect ($ databasehost, $ databaseusername, databasepassword $) or die (mysql_error ());
@ mysql_select_db ($ databasename) or die (mysql_error ());
/ / ลูปนี้ผ่านพวงของไฟล์
สำหรับ ($ r = 2; R $ <14; $ r + +) {
สำหรับ ($ C = $ r; $ C
ดังต่อไปนี้ได้หลอกลวงสำหรับฉัน :
โหลดข้อมูล LOW_PRIORITY INFILE ท้องถิ่น
'C : \ \ Documents and Settings \ \ Administrator \ \ Desktop SigmaS1.csv \ \ \'
INTO`mydb ตาราง`.``mytable
สนามหนีตาม'\ \ \'
บอกเลิก','
จำแนกตามสิ่งที่ส่งมาทางเลือก'"'
LINES บอกเลิก'\ r \ n'
(`ผู้`,`รหัสผ่าน`,`sno AMT`,``,`ActiveRec`);
สคริปคืออ่านบรรทัดเพิ่มเติมจากไฟล์ CSV เช่นถ้าไฟล์ csv ได้ 25 ระเบียนซึ่งแสดงให้เห็นมี 26 ระเบียนที่จะถูก คุณกรุณาช่วยบอกฉันที่ฉันจะผิดหรือเปล่า?
ฉันได้เพิ่มการตรวจสอบว่าเป็นบรรทัดแรกและดำเนินการต่อห่วงถ้าบรรทัดแรกของ
ขอบคุณ
เช่นเดียวกับแกรี่, ฉันต้องการเพื่อให้สามารถเขียนทับบันทึกที่มีอยู่ แต่ด้วยการปรับปรุงมันไม่ใช่การลบข้อมูลทั้งหมดในฐานข้อมูล Sp ที่ไหนสักแห่งรอบ ๆ ที่นี่ :
if ($ addauto)
$ แบบสอบถามแทรก"= เป็นค่า $ databasetable (",'$ ');"; linemysql
อื่น
$ แบบสอบถามแทรก"= เป็นค่า databasetable $ ('$ linemysql ');";
ฉันจะตรวจสอบเพื่อดูว่ามีบันทึกอยู่แล้วปรับปรุงดีกว่าแทรก?
ฉันจะข้ามบรรทัดแรกวิธีการแถว / ซึ่งเป็นส่วนหัวในแฟ้ม CSV และแทรกส่วนที่เหลือของข้อมูลลงในฐานข้อมูลได้หรือไม่
@ Gary
คุณสามารถใช้ @ mysql_query ("ตัด $ databasetable"); ขวาหลังคำสั่ง @ mysql_select_db
แต่ระวังว่าการกระทำจะเช็ดออกข้อมูลนี้และไม่ได้กลับได้
@ Kish
รหัสปัจจุบันไม่อนุญาตให้เรียกดูสำหรับ / อัพโหลดไฟล์
คุณก็สามารถใส่ไฟล์ CSV ในไดเรกทอรีเดียวกันกับสคริป PHP, และเพียงกำหนดตัวแปร $ csvfile จะเท่ากับชื่อไฟล์ (โดยไม่ต้องพา ธ )
สวัสดีทั้งหมด
ฉันจะมี csv เหล่านี้ราคาในวันที่"วันวันเดือนปี 2010"และ"รัฐ"prov, รัฐ"กับคอลัมน์ในฐานข้อมูลของฉันได้อย่างไร ผมดูตัวอย่างจำนวนมาก แต่ฉันไม่สามารถทำให้การทำงาน ความช่วยเหลือใด ๆ จะดี
AK, 10037591,1,"อังคาร 9 มีนาคม 2010 15:55:16", 59.7151, -151.4434,2.7,75.90,32"Kenai Peninsula, อลาสก้า"
THX
ขอขอบคุณโค้ดนี้ได้ช่วยจริงๆ!
ฉันจะปรับเปลี่ยนเพื่อให้รูปแบบให้มีการแสดงที่ผู้ใช้เรียกดูและเลือกไฟล์ CSV ที่จะนำเข้ามาในโต๊ะได้หรือไม่
และวิธีการที่ฉันสามารถทำให้มันเพื่อให้ทุกครั้งที่แฟ้มใหม่จะถูกส่งมันจะแทนที่สิ่งที่เก็บอยู่ในตารางหรือไม่
ขอบคุณมาก
นี่คือรหัสที่เป็นประโยชน์มากสำหรับผม ..
ขอบคุณ
ฉันจะได้รับเรียกดูไฟล์แทนการพิมพ์ชื่อพา ธ เต็ม ..
กรุณาช่วยในการนี้
ขอบคุณ
ฉันไม่ได้รับมันวิธีการทำงานจากการควบคุมไฟล์ วิธีแรกเรียกดูและเลือกไฟล์แล้วส่งที่ผมต้องไปแก้ไข
"สวัสดีค่ะ
ทำการแก้ไขบาง . ไฟล์ txt ของฉันมี 3 คอลัมน์แยกจากกันด้วย"|"ตัวอักษร (ท่อ) สคริปต์จะแสดงข้อมูลไฟล์, จำนวนแถวที่ได้ แต่จะไม่ป้อนข้อมูลลงในฐานข้อมูล แสดงความคิดเห็นใด?
$ csvcontent = fread ($ ไฟล์, $ ขนาด);
เปลี่ยนชื่อ ($ ไฟล์);
$ con = @ mysql_connect ($ dbhost, $ dbusername, dbuserpassword $) or die (mysql_error ());
@ mysql_select_db ($ DataSource) or die (mysql_error ());
$ lineseparator ="\ n";
"|"fieldseparator = $;
สาย $ = 0;
แบบสอบถาม $ ="";
linearray อาเรย์ $ = ();
$ count = 0;
foreach (split ($ lineseparator, $ csvcontent) เป็น $ บรรทัด) {
นับ $ = $ นับ + 1;
สาย $ + +;
$ = ตัดบรรทัด ($ บรรทัด"\ t");
บรรทัด $ = str_replace ("\ r ","",$ บรรทัด);
/************************************
บรรทัดนี้จะหนีอักขระพิเศษ ลบออกถ้ามีรายการที่จะหนีอยู่แล้วในไฟล์ CSV
************************************/
$ สาย ("'"," str_replace = \'", $ บรรทัด);
/*************************************/
$ linearray = ระเบิด ($ fieldseparator, $ บรรทัด);
$ = linearray (""",$ linemysql ระเบิดใน);
if ($ addauto)
แบบสอบถาม = แทรก"$ เป็นค่าตัวบ่งชี้ ('$ นับ','$ linemysql ');";
อื่น
แบบสอบถาม = แทรก"$ เป็นค่าตัวบ่งชี้ ('$ linemysql ');";
แบบสอบถาม $ .= $ แบบสอบถาม "\ n";
@ mysql_query ($ แบบสอบถาม) or die (mysql_error ());
echo"$ linemysql \ n";
}
สุดยอดสคริป! ผมจำเป็นต้องเริ่มต้นกระโดดเล็กน้อยสำหรับโครงการผมได้ทำงานในการนี้ได้หลอกลวง
ผมทำอะไรแปลกแจ้งให้ทราบล่วงหน้า แต่ฉันแก้ไขสคริปต์ที่จะทำงานกับฟอร์มและผมได้แจ้งให้ทราบว่าสำหรับการค้นหาข้อมูลที่ผ่านมาได้รับ buggered ขึ้นเพราะบรรทัดใหม่ char (อย่างใดอย่างหนึ่ง r \ หรือ \ n หรือทั้งสอง) ยังคงถูกบันทึกไว้ ในฐานข้อมูล MySQL
จนจบว่าถ้าคุณเปลี่ยน :
บรรทัด $ = str_replace ("\ r ","",$ บรรทัด);
ด้วย :
บรรทัด $ = str_replace ('\ r ',",$ บรรทัด);
มันจะให้ผลตอบแทนจากการเป็นปัญหาเป็นสายใหม่ที่ฉันได้เพิ่มสิ่งเล็ก ๆ ที่ช่วยให้การแทรกระเบียนใหม่ แต่การปรับปรุงระเบียนที่มีอยู่เพื่อให้คุณไม่ต้องมีรายการที่ซ้ำกัน ที่ด้านบนของโค้ดด้านล่างคุณจะเห็นที่ฉันทำแก้ไขเหมือนกันสำหรับบรรทัดใหม่ที่เกิดขึ้นจริงถ่าน
$ = linearray ("','",$ linemysql ระเบิดใน);
newlinemysql $ = str_replace ('\ n linemysql ',",$);
if ($ addauto) {
สวิทช์ ($ databasetable) {
กรณี ('ที่อยู่') :
$ duplicatevals ="= ที่อยู่ (ที่อยู่) ค่า
เมือง = ค่า (เมือง), รัฐ = (รัฐ) ค่า
ไปรษณีย์ค่านิยม = (ไปรษณีย์)";
แบ่ง;
กรณี ('เจ้าของ') :
$ duplicatevals ="ownername = ค่า (ownername)
housetype = ค่า (housetype)
addresskey = ค่า (addresskey)";
แบ่ง;
}
$ แบบสอบถามแทรก"= เป็นค่า databasetable $ newlinemysql (",'$')
ON ซ้ำอัพเดตคีย์
$ duplicatevals";
} else {
$ แบบสอบถามแทรก"= เป็น $ ค่า databasetable ('$ linemysql')
ON ซ้ำอัพเดตคีย์
$ duplicatevals";
}
นอกจากนี้ในรูปแบบของฉันฉันเพิ่มชื่อตารางและไม่ว่าฉันต้องการโต๊ะให้เป็น [บูลีน]"addauto"หรือไม่เป็นอินพุตเดียวจากแบบเลื่อนลง (คั่นด้วยเครื่องหมายจุลภาค) แล้วแยกผลที่ด้านบนของ simplecsvimport สคริป
สุดท้ายคุณต้องจำการตั้งค่าดัชนีในฐานข้อมูลสำหรับ"ที่ซ้ำกัน ... "ในการทำงานเพิ่มขึ้นอัตโนมัติจะไม่ทำงานในกรณีนี้คุณจึงจำเป็นต้องตั้งค่าดัชนีรองในตารางการเพิ่มขึ้นอัตโนมัติ, ตารางที่ดอน เพิ่มขึ้นอัตโนมัติ't และมีเขตข้อมูลที่ไม่ซ้ำกันทำงานกับดัชนีเดียวถ้าเป็นเส้นทางที่คุณอยากจะไป
ฉันหวังว่านี้จะช่วยให้ใครบางคน!
ไชโย!
ฉันจำเป็นต้องดาวน์โหลดข้อมูลจากเซิร์ฟเวอร์ระยะไกลโดยอัตโนมัติ ไฟล์ของ CSV และความต้องการผมไปเปิดเครื่องรูดมัน, และเก็บข้อมูลในฐานข้อมูล MySQL ที่ฉันสร้างขึ้น มีหลายฐานข้อมูล ส่วนแรกด้านล่างนี้เป็นหนึ่งในฐานข้อมูลที่มีคนช่วยผมด้วยและทำงานได้อย่างน่าพิศวง ฉันจะตั้งค่างาน cron และดาวน์โหลดได้โดยอัตโนมัติกำหนดไว้ แต่ฉันมีฐานข้อมูลมากขึ้นและไม่สามารถอ่านคนอื่น ๆ ในการทำงาน
ส่วนด้านล่างนี้ทำงานสบายมาก!
--------------------------
#! ถัง / ทุบตี
deleteparam ='- ลบหลัง';
# deleteparam ="
# ไดเรกทอรี ='- ไดเรกทอรีคำนำหน้า - = / $ myfolder HOME / myfolder / /'
ไดเรกทอรี ="
# userpwd ='- http - user = blah - http รหัสผ่าน blah ='
toUpper () {
echo $ 1 | TR"[: ต่ำ :]""[: บน :]"
}
# หาก [- z"$ 1"]; แล้ว
# echo ใช้ : $ 0 ตาราง
# ออกจาก
# Fi
ZIP = ชื่อของแฟ้มข้อมูลในเซิร์ฟเวอร์ระยะไกล
ZIP toUpper $ =``ZIP
# ไฟล์ในซิปมีหนึ่งน้อย _
DATA = ชื่อของตารางในฐานข้อมูล MySQL ของฉัน
DATA =`toUpper $ DATA`
# RM $ TABLE.csv.zip
# RM $ DATA.csv
cd / $ myfolder HOME / myfolder / /
####### ได้รับที่อยู่อาศัย
'wget https://3pv.mlslirealtor.com/Data3pv/DownloadBRSaction.asp?user_code=XXXXXX&password=XXXXXXX&data_type=datazip '- O $ ZIP.csv.zip
10 นอนหลับ
####### เปิดเครื่องรูดมัน
รหัสผ่าน
ls - la
เปิดเครื่องรูด o - $ ZIP.csv.zip
10 นอนหลับ
####### โหลดมัน
wget - verbose deleteparam $ $ $ userpwd ไดเรกทอรี https://mywebsite/myfolder/import.php?table = $ DATA
300 นอนหลับ
###### ลบไฟล์
ZIP.csv.zip RM $
DATA.csv RM $
10 นอนหลับ
_ ---------------------------
ทุกอย่างที่กล่าวนี้ทำงาน WONDERFUL
นี่คือสิ่งที่ฉันต้องการความช่วยเหลือกับ
--------------------------
1 ฉันต้องการสคริปต์เพื่อเพิ่มลงในไฟล์ข้างต้นที่จะดาวน์โหลดรูปภาพ หากคุณเห็นด้านล่างสคริปต์ที่ฉันต้องการโดยอัตโนมัติได้รับวันที่ปัจจุบันและเวลาที่สคริปต์สามารถวิ่ง มีเซิร์ฟเวอร์เก็บรูปจาก 7 วันที่ผ่านและได้รับการปรับปรุงอย่างต่อเนื่อง เมื่อสคริปต์นี้ได้ขับรถจะดาวน์โหลดข้อมูลลงในตารางที่ฉันสร้างขึ้น
2 จากนั้นฉันต้องสคริปต์ที่ค้นหาฐานข้อมูล MySQL มองหารายการที่มีรูปถ่ายแล้วเรียกภาพที่เกิดขึ้นจริงได้โดยตรงจากเซิร์ฟเวอร์ระยะไกลของพวกเขา ไฟล์ CSV นี้จะไม่ดาวน์โหลดรูปภาพ, ข้อมูลเพียง แต่ฉันสามารถใช้เพื่อเรียกใช้สคริปต์เพื่อดึงภาพที่จุดที่กำหนด ดูด้านล่าง
ต่อไปนี้เป็นคำแนะนำที่ฉันได้รับ
คำแนะนำ
ข้อมูลภาพจะถูกดึงโดย HTTP ข้อมูลภาพถ่ายมีการปรับปรุงวันละครั้งและสามารถดาวน์โหลดเป็นไฟล์ CSV จากนั้นคุณสามารถเขียนสคริปต์โดยใช้ข้อมูลจากแฟ้ม CSV เพื่อจุดกลับไปยังภาพบนเซิร์ฟเวอร์รูปภาพของเรา ': MM : SS YYYYMMDD HH'สำหรับ URL เพื่อส่งกลับข้อมูลที่ต้องใส่มูลค่า QUERY STRING last_updt> คุณ last_updt เขตข้อมูลเป็นค่าวันที่เป็นครั้งสุดท้ายว่าภาพที่มีการเปลี่ยนแปลงในรายการ
คุณจะต้องแทนที่ user_code และรหัสผ่านของผู้ถือสถานที่ (XXXX) ที่มีสิทธิเข้าสู่ระบบให้กับคุณ
ขั้นที่ 1 : ในการดึงรายชื่อภาพแฟ้มข้อมูลหลัก CSV ไปที่ URL ข้างล่างนี้
https://remotewebserver/Data3pv/DownloadBRSaction.asp?user_code=XXX&password=XXXX&query_str=last_updt%%> 20% 20'YYYYMMDD 20HH : MM : SS'& data_type = ภาพถ่าย
ขั้นที่ 2 : รูปถ่ายข้อมูลตารางควรดาวน์โหลดในรูปแบบ CSV
ขั้นที่ 3 : การใช้ธง 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
ตัวอย่างเช่น - ภาพที่สองจำนวนในรายการ 1899430 ตั้งอยู่ที่
https://remoteserver/folder/folder/2/430/1899430_2.jpg
Hi ก็บอกผมนับ แต่บันทึกไม่ใส่ข้อมูลลงในฐานข้อมูล
หวังว่าคุณจะช่วย
นาธาน
คำสั่งคือ : tablename ตัดทอน
คุณสามารถแทรกบรรทัดต่อไปนี้บน 58 :
@ mysql_query ("ตัด $ databasetable");
แต่ไม่สามารถย้อนกลับได้! ดังนั้นควรระมัดระวัง
ฉันจะว่างเปล่าของฉันตารางเต็มไปแล้วก่อนที่จะใส่ไฟล์ใหม่ได้หรือไม่
หรือฉันสามารถอัปเดตที่มีอยู่เข้ามาแล้ว
ตัดทอน, update? ฉันจะได้รับนี้ในการค้นหาได้หรือไม่
@ แอนดี้ Brotherton : ซึ่งหมายความว่าแบบสอบถามจะพยายามที่จะแทรกคอลัมน์บันทึกด้วยจำนวนที่ไม่ตรงกับที่ของตารางฐานข้อมูล
1) คุณแน่ใจหรือไม่ว่าไฟล์ CSV มีจำนวนเท่ากันแน่นอนของคอลัมน์ที่เป็นตารางในฐานข้อมูลได้หรือไม่
2) แยกเขตข้อมูลในนี้ไฟล์ CSV เป็นจริงจุลภาค? หรือมันจะเป็นเช่นแท็บหรืออื่น ๆ ? ถ้ายังไม่จุลภาค, เปลี่ยนค่าของ $ fieldseparator ในวันที่ 12 บรรทัดที่
3) ตารางจะต้องมีการสร้างไว้แล้วในฐานข้อมูลก่อนที่จะโหลดข้อมูลลงไป คุณแน่ใจหรือไม่ว่ามีหรือไม่
"สวัสดีค่ะ
จริงๆแล้วผมอยากจะใช้สคริปต์นี้ แต่ฉันไม่แน่ใจว่าสิ่งที่ฉันทำผิด ฉันจะได้รับปัญหาเดียวกันกับข้อมูลดังกล่าวข้างต้นไม่โหลดเข้าสู่ฐานข้อมูล พบตัวเลขให้ถูกต้องของแถว แต่ไม่มีอะไรจะแสดงในฐานข้อมูล
ผมเปลี่ยนสาย 88 @ mysql_query ($ แบบสอบถาม) or die (mysql_error ());
และได้รับข้อความนี้"นับคอลัมน์ที่ไม่ตรงกับการนับมูลค่าที่ 1 แถว"
@ Claus
สวัสดี Claus
CSV ไม่จริงๆมีบันทึกเดียว?
ตั้งแต่สคริปต์ก้าวมาถึงขั้นที่มันเอาท์พุทจำนวนระเบียนผมเดาว่ามันไม่ได้ล้มเหลวเมื่อมีการเชื่อมต่อกับฐานข้อมูล (56-57 บรรทัด) เพื่อให้ที่ไม่ได้ปัญหา
เป็นไปได้ว่าแบบสอบถามเพื่อแทรกข้อมูลล้มเหลว
ลองเปลี่ยนสาย 88 ด้วย :
mysql_query ($ แบบสอบถาม) or die (mysql_error ());
และตรวจสอบสิ่งที่คุณได้รับข้อผิดพลาด
@ Okoth
สวัสดี Okoth
ส่วนใหญ่แล้วคุณจะได้กำจัดของ 33-54 เส้นและแทนที่ด้วยบรรทัดเดียวนี้
$ csvcontent = @ file_get_contents ("... https://");
แทนที่จุดที่มี URL ที่ถูกต้อง (URL โดยตรงไปยังไฟล์ CSV)
@ เอเดรีย
สวัสดีเอเดรีย
Drupal ตามที่คุณระบุไว้ได้โครงสร้างตารางที่ซับซ้อน ทั้งนี้ขึ้นอยู่กับการเรียงลำดับของข้อมูลที่คุณกำลังนำเข้าก็มีโอกาสมากที่ข้อมูลนี้จะต้องมีการแยกออกเป็นหลายตารางโดยปกติจะมีคีย์ต่างประเทศร่วมกันเช่นโหนด id
แต่น่าเสียดายที่สคริปต์ข้างต้นไม่ช่วยทำ
ขอขอบคุณที่ให้สคริปต์ เข้าใจมาก
ฉันจะแก้ไขสคริปต์เพื่อที่จะเรียกนี้และจัดเก็บไฟล์ CSV จากอินเทอร์เน็ตใน MySQL?
สวัสดีทั้งหมด
ผมใช้ Drupal เพื่อสร้างเว็บไซต์ใหม่ท้าทายฉันมีตอนนี้คือว่าผมจำเป็นต้องนำเข้าข้อมูลจากแฟ้ม CSV ลงในฐานข้อมูล MySQL ที่มีตารางที่ใช้ร่วมกันจึงบางส่วนของเขตข้อมูลเป็นที่ฉันจำเป็นต้องนำเข้าข้อมูล csv อยู่ในส่วนต่างๆของฐานข้อมูลเดียวกันจะใช้งานสคริปต์นี้สำหรับฉันหรือไม่ หากไม่สามารถยื่น csv นี้ถูกนำเข้าโดยใช้วิธีการอื่นหรือไม่
กรุณาแจ้งขอขอบคุณสำหรับความช่วยเหลือใด ๆ
ความนับถือ
เอเดรีย
ทุกคน Hi!
ดูเหมือนจะมีการทำงานสคริปต์ ... exept ว่าจะไม่เขียนข้อมูลไปยัง MySQL ...
เช่นเดียวกับคริส : สคริปต์เสร็จสมบูรณ์และแม้ผลการนับบันทึก แต่ไม่ได้ติดต่อฐานข้อมูลได้เลย ... แต่บอกฉัน : พบทั้งหมด 1 ระเบียนในแฟ้ม csv นี้
ฉันจะทำอย่างไรผิด (IM noob ที่ PHP และ MySQL)
ขอขอบคุณ
Claus
สวัสดีสแตนเลย์, ปัญหาอยู่ที่ราคาเดียว ซอฟต์แวร์ blog ที่นี่พวกเขาเขียนใหม่ เพียงแทนที่'และ'กับ'
PS : คำสั่งข้างต้นคือการโดยตรงโหลดไฟล์ csv ลงในฐานข้อมูลจาก MySQL พรอมต์ นี้เป็นสิ่งที่ดี แต่ไม่เกี่ยวข้องกับสคริปต์ข้างต้น
ก็กล่าวว่าในการโหลดนี้เข้าในฐานข้อมูล
ข้อมูลโหลด'path'infile ท้องถิ่นในเขตข้อมูลตารางตารางบอกเลิก','สายการบอกเลิก'\ n';
ฉันจะเปลี่ยนเส้นทางและตารางจะเป็นของ แต่มันทำให้ฉันข้อผิดพลาดที่รหัสไวยากรณ์ของมันผิด 1064
ทุกคนสามารถให้ฉันบางคำแนะนำในเรื่องว่าจะทำอย่างไร
ขอบคุณ
Stan
ที่เกี่ยวกับปัญหาราคาหุ้นคุณก็สามารถใช้นี้
$ linearray = ("/,(?=(?:[^ preg_split \"] * \"^ [\"] ")*(?![^ \ * \"] * \ n เส้น "))/", $ );
ไชโย,
Gaz
คริสเรียน
โปรดแทนที่ :
@ mysql_query ($ แบบสอบถาม);
ด้วย :
@ mysql_query ($ แบบสอบถาม) or die (mysql_error ());
และแจ้งให้เราทราบว่าข้อผิดพลาดของมันให้คุณ
ทุกคนเฮ้
Love สคริปต์นี้และมันก็ทำงานดีตอนนี้ก็แทรกสคริปต์เคยชินระเบียน สคริปต์ที่เสร็จสมบูรณ์และแม้ผลการนับบันทึก แต่ไม่ได้ติดต่อฐานข้อมูลที่ทั้งหมด ...
ความคิดใด?
ขอขอบคุณ
C
Hi Mark,
ครั้งแรกก็หมายถึงไฟล์ที่คุณเลือกในตัวแปร $ outputfile
สองไฟล์นี้จะต้องมีการเขียนได้ ผมถือว่าคุณกำลังใช้ Linux, Windows ไม่เป็นนี้โดยทั่วไปไม่เป็นปัญหากับ Windows
บนลินุกซ์เพียง SSH ไปยังเครื่องให้เปลี่ยนไปยังไดเรกทอรีที่ไฟล์ออกเป็นพิมพ์ : chmod 777 ชื่อไฟล์
ที่'filename'คือชื่อแฟ้มที่เกิดขึ้นจริง
ถ้าคุณไม่ได้ SSH, FTP ลูกค้าจำนวนมากเปลี่ยนสิทธิ์การสนับสนุน ในการนี้ FTP ไปยังโฟลเดอร์ที่มีไฟล์ออกจากนั้นเลือกไฟล์นี้และค้นหาจากซอฟต์แวร์ FTP นี้ตัวเลือกเพื่อเปลี่ยนการอนุญาต ตั้งให 777, หรือ'อ่าน, เขียน, รัน'สำหรับทุกคน
สวัสดีทั้งหมด
ขอขอบคุณที่ให้สคริปต์ noob ฉันเป็นที่ PHP และ MySQL ดังนั้นผมขอขอบคุณที่บางอย่างเช่นนี้ ฉันได้เท่าที่สร้าง"ไฟล์ไม่สามารถเขียนได้สิทธิ์ตรวจสอบ"ข้อความแสดงข้อผิดพลาดในเบราว์เซอร์ของฉัน คนที่สามารถกรุณาอธิบายความคิดเห็นเกี่ยวกับการตั้งรับอนุญาตให้ 777? ฉันใช้ Excel สร้างไฟล์ CSV.? ขอบคุณล่วงหน้า
ฉันสามารถรับบรรทัดแรกของไฟล์ CSV ของฉันที่จะนำเข้ามาในฐานข้อมูล
ที่นี่สำเนาของแฟ้มบันทึกที่ :
ใส่ลงในค่าผลิต (", '2008 - 10 - 21', '50', '50', '50','นี้เป็นสายแรกบันทึก','นี้เป็นสายหมายเหตุ 2','นี้เป็นสายหมายเหตุ 3 ', '0000 - 00 - 00', '0000 - 00 - 00', '0000 - 00 - 00', Ave Morningside '456','Ste. Brooklyn NY 512','','', '10023', 'โจ''ลูกค้า 1',);
ใส่ลงในค่าผลิต (", '2008 - 10 - 09', '50', '50', '50','นี้เป็นสายแรกบันทึก ',",",' 2008/10/09', '2008 'ลูกค้า 1'NY Brooklyn -10-14', '0000 - 00 - 00', Ave Morningside '456','Ste 512','','', '10023','Joe',).;
ใส่ลงในค่าผลิต (", '2008 - 10 - 14', '25', '25', '25','หมายเหตุ 1 ',",",' 2008/10/14', '2008 - 10 - 17 ','NULL', '555 บาง''ห้องสวีท 123','y ใหม่''New York', '10001','โจ','1 ชื่อ');
ใส่ลงในค่าผลิต (", '2008 - 10 - 16', '45', '45', '45 ',",",",' 2008/10/16', '2008 - 10 - 24',' NULL ',",",",",",' ',"); Tom
ใส่ลงในค่าผลิต (", '2008 - 10 - 01', '34', '34', '34 ',",",",' 2008-10-02', '2008 - 10 - 04',' 2008/10/04 ',",",",",",' Steve ',");
ใส่ลงในค่าผลิต (", '2008 - 10 - 17', '50', '50', '50','นี้เป็นสายแรกบันทึก ',",",' 2008/10/03', '0000 'ลูกค้า 1'NY Brooklyn -00-00', '0000 - 00 - 00', Ave Morningside '456','Ste 512','','', '10023','Joe',).;
ใส่ลงในค่าผลิต (", '2008 - 10 - 18', '25', '25', '25','หมายเหตุ 1 ',",",' 2008/10/04', '0000 - 00 - 00 ', '0000 - 00 - 00', '555 บางห้องสวีท','123','Y ใหม่ New York','', '10001','โจ','1 ชื่อ');
ใส่ลงในค่าผลิต (", '2008 - 10 - 19', '45', '45', '45 ',",",",' 2008/10/05', '0000 - 00 - 00',' 0000-00-00 ',"); Tom ',",",",",",'
ใส่ลงในค่าผลิต (", '2008 - 10 - 20', '34', '34', '34', '0000 - 00 - 00'2008/10/06 ',",",' บันทึกใหม่' ', '0000 - 00 - 00 ',",",",",",' ',"); สตีฟ
ใส่ลงในค่าผลิต (", '2008 - 10 - 21', '12', '12', '12','บันทึกใหม่กว่าแม้ ',",",' 2008/10/07', '0000 - 00 - 00', '0000 - 00 - 00 ',"); เครื่องหมาย ',",",",",",'
ใส่ลงในค่าผลิต (", '2008 - 10 - 22', '1', '0', '0 ',",",",' 2008-10-08', '0000 - 00 - 00',' 0000-00-00 ',",",",",",",");
ใส่ลงในค่าผลิต (", '2008 - 10 - 23', '2', '0', '0 ',",",",' 2008/10/09', '0000 - 00 - 00',' 0000-00-00 ',",",",",",",");
ใส่ลงในค่าผลิต (", '2008 - 10 - 24', '3', '0', '0 ',",",",' 2008/10/10', '0000 - 00 - 00',' 0000-00-00 ',",",",",",",");
ใส่ลงในค่าผลิต (", '2008 - 10 - 15', '0', '0', '0','รุ่นที่ใหม่กว่า ',",",' 2008-10-11', '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 - 19', '0','',",",' ล่าสุด 0000-00-00''0', '0', '0000 - 00 - 00' , '0000 - 00 - 00 ',",",",",",");
ใส่ลงในค่าผลิต (", '2008 - 10 - 01', '34', '34', '34','',",",' มากล่าสุด 2008-10-02', '2008 - 10 - 04 ', บรูซ ',",",",",",' '2008 - 10 - 04');
ใส่ลงในค่าผลิต (",");
มันบอกก็ใส่ 20 รายการ แต่มีเพียงคนแรกที่ทำให้ลงในฐานข้อมูล ความคิดใด?
มันไม่ได้ใส่ลงในตารางฐานข้อมูลที่ผมต้องการแทรก .. : (
หัวหน้างานไนซ์
สวัสดีทั้งหมด
ฉันทำเปลี่ยนแปลงเล็กน้อยในรหัสของคุณเพื่อให้การทำงานเป็นผู้นำเข้า CSV, ตามที่ควร
CSV - S บรรทัดแรกควรถือชื่อคอลัมน์ที่คุณต้องการนำเข้าเพื่อเปลี่ยนลูป foreach :
foreach (split ($ lineseparator, $ csvcontent) เป็น $ บรรทัด) {
สาย $ + +;
$ = ตัดบรรทัด ($ บรรทัด"\ t");
บรรทัด $ = str_replace ("\ r ","",$ บรรทัด);
/ * รับชื่อคอลัมน์จากบรรทัดแรกของ * CSV /
if ($ บรรทัด == 1) {
คอลัมน์ $ = ระเบิด ($ fieldseparator, $ บรรทัด);
$ = columnsql ระเบิดในคอลัมน์ (",",$);
echo $ columnsql;
ต่อ;
}
/************************************
บรรทัดนี้จะหนีอักขระพิเศษ ลบออกถ้ามีรายการที่จะหนีอยู่แล้วในไฟล์ CSV
************************************/
$ สาย ("'"," str_replace = \'", $ บรรทัด);
/*************************************/
$ linearray = ระเบิด ($ fieldseparator, $ บรรทัด);
$ = linearray ("','",$ linemysql ระเบิดใน);
if ($ addauto)
$ แบบสอบถามแทรก"= เป็น $ databasetable ($ columnsql) ค่า ('$ linemysql ');";
อื่น
$ แบบสอบถามแทรก"= เป็น $ databasetable ($ columnsql) ค่า ('$ linemysql ');";
แบบสอบถาม $ .= $ แบบสอบถาม "\ n";
@ mysql_query ($ แบบสอบถาม);
}
วิธีการขนาดใหญ่เป็นไฟล์ที่คุณกำลังพยายามที่จะนำเข้าได้หรือไม่
ในกรณีใด ๆ ให้ลองเพิ่มบรรทัดต่อไปนี้หลังจากที่แท็กเปิดเริ่มต้น :
set_time_limit (300);
ซึ่งจะทำให้สคริปต์ไม่เกิน 5 นาที (300 วินาที) ในการปฏิบัติเวลา
เปลี่ยน 300 กับ 0 จะอนุญาตให้ใช้เป็นเวลามากที่สุดเท่าที่จำเป็น
Hi there, ขอบคุณสคริปต์ดี เมื่อรันมันฉันได้รับ :
ข้อผิดพลาดร้ายแรง : ระยะเวลาการทำงานสูงสุด 30 วินาทีที่เกิน 63 บรรทัดใน
มีอะไรที่ฉันสามารถทำได้เพื่อรับรอบนี้หรือไม่
ร็อบบี้ขอบคุณสำหรับคุณนอกจากนี้ก็ค่อนข้างยินดีต้อนรับ แต่น่าเสียดายที่มันไม่ทำงานทันทีเมื่อฉันคัดลอก ผมคิดว่าบางสิ่งบางอย่างขาดหายไปเพราะรหัสจะถูกกระจายออกไปสองโพสต์
คุณสามารถตรวจสอบรหัสที่แสดงที่นี่ บางสิ่งบางอย่างหายไป?
แบรดถ้าคุณได้ดาวน์โหลดได้เร็วกว่าเมื่อสัปดาห์ที่แล้วให้เปลี่ยน'<?'ที่ด้านบนด้วย'<? PHP'(ลบเว้นวรรค)
ฉันได้รับแรกมากของมันตัดออกและส่วนที่เหลือเพียงแค่ในเบราว์เซอร์รหัสของฉัน ฉันรู้ว่า PHP ทำงานได้เพราะส่วนที่เหลือของเว็บไซต์ของงาน
ฉันได้ปรับรุ่นเป็น PHP5 ไม่ก็ตามที่?
)
/ / ข้ามเพราะมันอยู่ภายในองค์ประกอบของอาร์เรย์ที่ไม่ดี
อื่น
newarray $ [$ y] = linearray ('"',",$ str_replace [$ y]);
$ linearray = array_values ($ newarray) / / ตั้งค่าคีย์เพื่ออาเรย์ใหม่
$ x + +;
}
}
}
ดีนี่คือการแก้ไขเพื่อแสดงความคิดเห็นก่อนหน้าฉัน :
แทรกนี้ในระหว่าง :
$ linearray = ระเบิด ($ fieldseparator, $ บรรทัด);
... ข้อมูลรหัสแทรกด้านล่าง ...
$ = linearray ("','",$ linemysql ระเบิดใน);
ค้นหาและช่วยให้ทุกคน"Stuff, More Stuff"กันก่อนที่จะ imploding มัน
$ ="";
$ b ="";
qoutecount $ = 0;
สำหรับ ($ x = 0; $ x -1) {
$ qoutecount + +;
if ($ 1 == qoutecount)
$ = $ x; / / เก็บตัวอย่างแรก
elseif ($ 2 == qoutecount) {
quotecount $ = 0;
$ b = $ x; เก็บ / / ครั้งที่สอง
/ / ไม่ว่ามัน ... รวบรวมองค์ประกอบทั้งหมดจาก $ กับ $ b เป็น $ และไม่สนใจสิ่งใดองค์ประกอบหลัง $ B ถึง $ ในอาเรย์ใหม่
newa $ =""; / / เริ่มต้นสตริงใหม่
สำหรับ ($ z = $; $ z $ & & $ y
ไม่บัญชีสำหรับเขตข้อมูลดังกล่าวเป็นบรรทัดนี้
Fname Lname,,"บริษัท ฯ , Inc", เมือง, รัฐ, รหัสไปรษณีย์
บริษัท ฯ และ บริษัท Inc รับแบ่งออกเป็นสองคอลัมน์ที่แตกต่างกัน
Rengaraj,
csv ที่ควรจะอยู่ในสถานที่เดียวกันกับแฟ้ม PHP
นอกจากนี้คุณยังไม่ได้จริงๆต้องใช้ csv ชื่อไฟล์เดียวกัน
bbqrest.csv เป็นตัวอย่างให้เปลี่ยนชื่อไฟล์นี้ด้วยตัวคุณเอง
จะทำได้รวดเร็วตอบกลับหนึ่งฉันมี bbqrest.csv ไฟล์ CSV ที่เส้นทางที่ถูกต้อง (root) ..
ฉันได้รับข้อผิดพลาดไม่พบไฟล์นี้ ให้แน่ใจว่าคุณระบุเส้นทางที่ถูกต้อง
มันจะเป็นความคิดที่ดีที่จะเพิ่มการป้องกันไม่ให้ส่วนหัวภายใน csv จากการถูกส่งไปยังฐานข้อมูล หรือเพื่อสร้างสคริปต์ที่ดึงออกแถวแรกและสร้างฐานข้อมูลโดยใช้ค่าเหล่านี้เป็นชื่อคอลัมน์
สตีฟ
คุณจะวางสคริปต์นี้ไปไว้ในโฟลเดอร์เว็บที่สามารถเข้าถึงได้หลังจากการเปลี่ยนตัวแปรที่จะต้องมีการเปลี่ยนแปลง อ่านความคิดเห็นในสคริปเพื่อหาสิ่งที่คุณจำเป็นต้องระบุ จากนั้นให้เรียกสคริปต์ขึ้นในเว็บเบราเซอร์, ชอบ
https://www.example.com/path-to-script/simplescvimport.php
Newbie รวม -- ฉีกผมออกพยายามที่จะนำเข้า CSV Excel ลง phpMyAdmin (ใน Mac) จะรักจะรู้ว่าสถานที่และสิ่งที่ฉันจะทำอย่างไรกับสคริป PHP นี้ ... ?
ว้าวเย็น ... มีความคิดหลังจากที่อ่านรหัส ... ของคุณขอบคุณมาก
Hi there, การดัดแปลงขนาดเล็กสำหรับค่า incrementing รถยนต์ในคอลัมน์ 1 (เขต id)
ดูการนับตัวแปร $
Ola, Enrico
/ / $ con = @ mysql_connect ($ databasehost, $ databaseusername, databasepassword $) or die (mysql_error ());
/ / @ mysql_select_db ($ databasename) or die (mysql_error ());
สาย $ = 0;
แบบสอบถาม $ ="";
linearray อาเรย์ $ = ();
$ count = 0;
foreach (split ($ lineseparator, $ csvcontent) เป็น $ บรรทัด) {
นับ $ = $ นับ + 1;
สาย $ + +;
$ = ตัดบรรทัด ($ บรรทัด"\ t");
$ สาย ("'"," str_replace = \'", $ บรรทัด);
$ linearray = ระเบิด ($ fieldseparator, $ บรรทัด);
$ = linearray ("','",$ linemysql ระเบิดใน);
$ แบบสอบถาม ="แทรกลงในตารางฐานข้อมูลของคุณ``VALUES ('$ นับ','$ linemysql ');";
แบบสอบถาม $ .= $ แบบสอบถาม "\ n";
@ mysql_query ($ แบบสอบถาม);
}
/ / @ mysql_close ($ con);
ขอบคุณมากนี้จำนวนมากที่บันทึกไว้ของเวลา! Nice สคริปต์
ฉันมักจะใช้ phpMyAdmin แต่จริงในกรณีหนึ่งไม่ได้ติดตั้งไว้และจะไม่สามารถเข้าถึงเปลือก (ต้องการมากที่สุดของผู้ให้บริการโฮสติ้งที่ใช้ร่วมกัน) นี้สามารถเข้ามามีประโยชน์มาก
มีประโยชน์มากขอขอบคุณ