ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingพอจะมีวิธีเพิ่มข้อมูลลงใน Database ทีละ หลายๆเรคคอร์ดไหมครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: พอจะมีวิธีเพิ่มข้อมูลลงใน Database ทีละ หลายๆเรคคอร์ดไหมครับ  (อ่าน 9193 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
ChilTunDer
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 318



ดูรายละเอียด
« เมื่อ: 29 มกราคม 2013, 22:17:13 »

ผมจะเพิ่มข้อมูลลงในตาราง โดยแต่ละตารางจะมีจำนวนข้อมูลไม่ต่ำกว่า 2 แสน เรคคอร์ด

ไม่ทราบว่าพอจะมี script ไหนช่วยผมได้บ้างครับ

โดยข้อมูลไม่จำเป็นต้อถูกต้องครับ จะเป็นข้อมูลที่มาจากการ random ก็ได้ เช่น

id = 0000000001, name = aa01, lname a01, email = aa001

อะไรประมาณนี้ครับ

เป็น php หรืออะไรก็ได้ครับ

 wanwan031
บันทึกการเข้า
Railway
สมุนแก๊งเสียว
*

พลังน้ำใจ: 47
ออฟไลน์ ออฟไลน์

กระทู้: 605



ดูรายละเอียด
« ตอบ #1 เมื่อ: 29 มกราคม 2013, 22:20:37 »

มันน่าจะทำได้ทีละเรคคอร์ดนะครับ แต่วนรอบเอา อยากได้กี่รอบก็วนเอา เบสิกและง่ายที่สุดแล้วครับ
บันทึกการเข้า

Maxio
ก๊วนเสียว
*

พลังน้ำใจ: 49
ออฟไลน์ ออฟไลน์

กระทู้: 275



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 30 มกราคม 2013, 00:15:03 »

แบบนี้ได้มั้ยครับ ทีละหลาย record

โค๊ด:
INSERT INTO Table (ID,Name,Email) 
    VALUES ('0001','Somchai','somchai@xxx'),
           ('0002','Thai','thai@xxx'),
           ('0003','Tong','tong555@xxx'),
           ('0004','Boon','boon69@xxx'), ...
 
แต่ผมว่า วนลูปก็ได้นะ gen id ตามจำนวนลูป name email ก็ใช้ string random เอา
หรือแบบอันบน ก็ทำเป็น string ยาวๆๆๆเลย  wanwan004
บันทึกการเข้า

ChilTunDer
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 318



ดูรายละเอียด
« ตอบ #3 เมื่อ: 30 มกราคม 2013, 11:51:00 »

แบบนี้ได้มั้ยครับ ทีละหลาย record

โค๊ด:
INSERT INTO Table (ID,Name,Email) 
    VALUES ('0001','Somchai','somchai@xxx'),
           ('0002','Thai','thai@xxx'),
           ('0003','Tong','tong555@xxx'),
           ('0004','Boon','boon69@xxx'), ...
 
แต่ผมว่า วนลูปก็ได้นะ gen id ตามจำนวนลูป name email ก็ใช้ string random เอา
หรือแบบอันบน ก็ทำเป็น string ยาวๆๆๆเลย  wanwan004

ถ้าผมใช้ for วันนี่ ผมต้องเขียน ตรงส่วนของ Values ยังไง หรอครับ
บันทึกการเข้า
Boyjato
Verified Seller
ก๊วนเสียว
*

พลังน้ำใจ: 44
ออฟไลน์ ออฟไลน์

กระทู้: 435



ดูรายละเอียด
« ตอบ #4 เมื่อ: 30 มกราคม 2013, 13:14:22 »

ทำข้อมูลบน excel แล้ว import เข้าไปครับ
บันทึกการเข้า
sinthai
ก๊วนเสียว
*

พลังน้ำใจ: 23
ออฟไลน์ ออฟไลน์

กระทู้: 416



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 30 มกราคม 2013, 13:56:12 »

Import จาก excel ง่ายสุด
บันทึกการเข้า
Punisher
ก๊วนเสียว
*

พลังน้ำใจ: 11
ออฟไลน์ ออฟไลน์

กระทู้: 251



ดูรายละเอียด
« ตอบ #6 เมื่อ: 30 มกราคม 2013, 16:13:55 »

อ้างถึง
DECLARE @UCode int;
DECLARE @LCode int
DECLARE @i int
DECLARE @char varchar(255);
DECLARE @Marks varchar(255);
DECLARE @num varchar(255);

SET @Lcode = 1
SET @Ucode = 9999
SET @char = 'abcdfghjklmnpqrstvwxyz'
SET @marks='aeiou'
SET @num='123456789'
SET @i=1
WHILE @i<=200000 BEGIN
insert into test_1(code1,name1,email)
select
ROUND(((@Ucode - @Lcode -1) * RAND() + @Lcode), 0) as code,
SUBSTRING(@char,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@char) + 1, 2) + SUBSTRING(@marks,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@marks) + 1, 1) + SUBSTRING(@char,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@char) + 1, 2) as name1,
SUBSTRING(@char,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@char) + 1, 2) + SUBSTRING(@marks,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@marks) + 1, 1) + SUBSTRING(@char,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@char) + 1, 2) + SUBSTRING(@num,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@num) + 1, 5) + '@hotmail.com'
SET @i=@i+1
END
sql server ลองเอาไปประยุกต์ดูครับ wanwan044
« แก้ไขครั้งสุดท้าย: 30 มกราคม 2013, 16:22:58 โดย Punisher » บันทึกการเข้า
dead13th
คนรักเสียว
*

พลังน้ำใจ: 21
ออฟไลน์ ออฟไลน์

กระทู้: 186



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 03 กุมภาพันธ์ 2013, 11:05:14 »

คุณ Punisher เยี่ยมครับ
บันทึกการเข้า

เว็บลงประกาศฟรี www.post2ads.net
ChilTunDer
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 318



ดูรายละเอียด
« ตอบ #8 เมื่อ: 07 กุมภาพันธ์ 2013, 01:26:18 »

อ้างถึง
DECLARE @UCode int;
DECLARE @LCode int
DECLARE @i int
DECLARE @char varchar(255);
DECLARE @Marks varchar(255);
DECLARE @num varchar(255);

SET @Lcode = 1
SET @Ucode = 9999
SET @char = 'abcdfghjklmnpqrstvwxyz'
SET @marks='aeiou'
SET @num='123456789'
SET @i=1
WHILE @i<=200000 BEGIN
insert into test_1(code1,name1,email)
select
ROUND(((@Ucode - @Lcode -1) * RAND() + @Lcode), 0) as code,
SUBSTRING(@char,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@char) + 1, 2) + SUBSTRING(@marks,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@marks) + 1, 1) + SUBSTRING(@char,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@char) + 1, 2) as name1,
SUBSTRING(@char,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@char) + 1, 2) + SUBSTRING(@marks,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@marks) + 1, 1) + SUBSTRING(@char,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@char) + 1, 2) + SUBSTRING(@num,ABS(CAST(CAST(NewID() AS VARBINARY) AS int)) % LEN(@num) + 1, 5) + '@hotmail.com'
SET @i=@i+1
END
sql server ลองเอาไปประยุกต์ดูครับ wanwan044

ขอบคุณครับ

ผมลองนำไปประยุกต์ใช้กับตัว sqlyog แต่ก็ไม่ได้อะครับ ไม่ทราบว่าต้องแก้ไขตรงส่วนไหนบ้างครับ
บันทึกการเข้า
xvlnw.com
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 493
ออฟไลน์ ออฟไลน์

กระทู้: 5,905



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 07 กุมภาพันธ์ 2013, 01:29:19 »

# PHP
โค๊ด:
for($i=1; $i<=1000000;$i++){
   // SQL Insert to DB
}
บันทึกการเข้า

iLhay
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 411
ออฟไลน์ ออฟไลน์

กระทู้: 4,368



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 07 กุมภาพันธ์ 2013, 01:47:58 »

# PHP
โค๊ด:
for($i=1; $i<=1000000;$i++){
   // SQL Insert to DB
}

อันนี้ก็ได้ทีละ 1 record ครับ

จขกท คงอยากได้ประมาณว่า parallel insert ครับ (ซึ่งมันเป็นไปไม่ได้ครับ)

เพราะว่า Database ทำงานเป็น Sequence ครับ

เพราะฉะนั้น ก็เขียนแบบ for ข้างบนนั่นแหละครับ 5555
« แก้ไขครั้งสุดท้าย: 07 กุมภาพันธ์ 2013, 01:48:58 โดย iLhay » บันทึกการเข้า

Wordpress Hosting


Wordpress Hosting เริ่มต้นปีละ 790 บาท NVMe SSD เร็ว 9000MB/s เร็วกว่านี้ไม่มีอีกแล้ว
Cloud Server เริ่มต้นเพียงเดือนละ 159 บาท พร้อมใช้ภายใน 1 นาที ผ่านระบบอัตโนมัติมีทั้ง Linux / Windows / DirectAdmin
สอบถามข้อมูลและแจ้งปัญหา 02-105-4417 ตลอด 24 ชั่วโมง
ChilTunDer
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 318



ดูรายละเอียด
« ตอบ #11 เมื่อ: 07 กุมภาพันธ์ 2013, 09:01:40 »

# PHP
โค๊ด:
for($i=1; $i<=1000000;$i++){
   // SQL Insert to DB
}

อันนี้ก็ได้ทีละ 1 record ครับ

จขกท คงอยากได้ประมาณว่า parallel insert ครับ (ซึ่งมันเป็นไปไม่ได้ครับ)

เพราะว่า Database ทำงานเป็น Sequence ครับ

เพราะฉะนั้น ก็เขียนแบบ for ข้างบนนั่นแหละครับ 5555

ถ้าทำแบบนี้มันจะเพิ่มข้อมูลได้ด้วยหรอครับ แล้วข้อมูลที่ถูกเพิ่มจะไม่ซ้ำกันหรอครับ.

ใฃ่แบบนี้ไหมครับ

<?php
$con = mysql_connect("localhost","root","admin");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("test", $con);

for($i=1; $i<=1000000;$i++){
mysql_query("INSERT INTO Member(ID, Fname, Lname)
VALUES (23652145, 'ณัฐพล','ดีใจจริง')");
}

mysql_close($con);
?>

ถ้าแบบนี้มันก็เพิ่มได้แค่อันเดียวสิครับ เพราะมันติด PK ซ้ำกัน
บันทึกการเข้า
gubaaball
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 184
ออฟไลน์ ออฟไลน์

กระทู้: 1,678



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 07 กุมภาพันธ์ 2013, 09:10:29 »

# PHP
โค๊ด:
for($i=1; $i<=1000000;$i++){
   // SQL Insert to DB
}

อันนี้ก็ได้ทีละ 1 record ครับ

จขกท คงอยากได้ประมาณว่า parallel insert ครับ (ซึ่งมันเป็นไปไม่ได้ครับ)

เพราะว่า Database ทำงานเป็น Sequence ครับ

เพราะฉะนั้น ก็เขียนแบบ for ข้างบนนั่นแหละครับ 5555

ถ้าทำแบบนี้มันจะเพิ่มข้อมูลได้ด้วยหรอครับ แล้วข้อมูลที่ถูกเพิ่มจะไม่ซ้ำกันหรอครับ.

ใฃ่แบบนี้ไหมครับ

<?php
$con = mysql_connect("localhost","root","admin");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("test", $con);

for($i=1; $i<=1000000;$i++){
mysql_query("INSERT INTO Member(ID, Fname, Lname)
VALUES (23652145, 'ณัฐพล','ดีใจจริง')");
}

mysql_close($con);
?>

ถ้าแบบนี้มันก็เพิ่มได้แค่อันเดียวสิครับ เพราะมันติด PK ซ้ำกัน

ทำอย่างนี้แหละครับ คือให้มันทีละเร็คคอร์ด ส่วนข้อมูลในการ insert ก็ดึงมาจากตัวแปรที่เก็บชุดข้อมูลครับ เช่นสุ่มชุดข้อมูลขึ้นมาโดยใช้คำสั่ง rand ให้ได้ชุดข้อมูลสัก 100000 ข้อมูลขึ้นมาก่อนอาจจะใช้ - คั่นทีละชุดข้อมูล แล้วใช้ explode แยกข้อมูลออกมาเก็บเป็น array เราก็จะได้ array 100000 ตัวขึ้นมา แล้วนับจำนวน array ในชุดข้อมูลนั้นแล้วก็ใช้ for วนลูปการทำงานตามเงื่อนไข แค่นั้นแหละครับ ผมอธิบายงงหรือป่าว ผิดพลาดก็ขออภัยด้วยคับ
บันทึกการเข้า

iLhay
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 411
ออฟไลน์ ออฟไลน์

กระทู้: 4,368



ดูรายละเอียด เว็บไซต์
« ตอบ #13 เมื่อ: 07 กุมภาพันธ์ 2013, 09:43:24 »


ถ้าทำแบบนี้มันจะเพิ่มข้อมูลได้ด้วยหรอครับ แล้วข้อมูลที่ถูกเพิ่มจะไม่ซ้ำกันหรอครับ.

ใฃ่แบบนี้ไหมครับ

<?php
$con = mysql_connect("localhost","root","admin");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("test", $con);

for($i=1; $i<=1000000;$i++){
mysql_query("INSERT INTO Member(ID, Fname, Lname)
VALUES (23652145, 'ณัฐพล','ดีใจจริง')");
}

mysql_close($con);
?>

ถ้าแบบนี้มันก็เพิ่มได้แค่อันเดียวสิครับ เพราะมันติด PK ซ้ำกัน

PK ก็ทำเป็น AUTO INCREMENT สิครับ

หรือถ้าไม่ AUTO INCREMENT แบบนี้ก็ได้นี่ครับ

<?php
$con = mysql_connect("localhost","root","admin");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("test", $con);

$memId = "0";
$fname = "THAISEO";
$lname = "BOARD"

for($i=1; $i<=1000000;$i++){
$memId = i;
$fname = $fname . $memId;
$lname = $lname . $memId;
mysql_query("INSERT INTO Member(ID, Fname, Lname)
VALUES ($memId, $fname, $lname )");
}

mysql_close($con);
?>

ผมไม่แม่น Syntax PHP นะ แต่ถ้าทำตามที่ผมโพสท์ไป ยังไงก็ใส่ได้ เพราะผมยังเขียน Java ใส่ข้อมูลเล่นๆลงใน DB เวลาเทสสคิปอยู่เลย

ปล. ถ้า syntax ผิด ก็ ไปแก้ syntax ให้ถูกเอาเองนะครับ
« แก้ไขครั้งสุดท้าย: 07 กุมภาพันธ์ 2013, 09:44:41 โดย iLhay » บันทึกการเข้า

Wordpress Hosting


Wordpress Hosting เริ่มต้นปีละ 790 บาท NVMe SSD เร็ว 9000MB/s เร็วกว่านี้ไม่มีอีกแล้ว
Cloud Server เริ่มต้นเพียงเดือนละ 159 บาท พร้อมใช้ภายใน 1 นาที ผ่านระบบอัตโนมัติมีทั้ง Linux / Windows / DirectAdmin
สอบถามข้อมูลและแจ้งปัญหา 02-105-4417 ตลอด 24 ชั่วโมง
หน้า: [1]   ขึ้นบน
พิมพ์