ฉันใช้ SQL Server 2008 Management Studio และมีตารางที่ฉันต้องการย้ายไปยังเซิร์ฟเวอร์ db อื่น
มีตัวเลือกในการส่งออกข้อมูลเป็นส่วนแทรกลงในสคริปต์ SQL หรือไม่?
ฉันใช้ SQL Server 2008 Management Studio และมีตารางที่ฉันต้องการย้ายไปยังเซิร์ฟเวอร์ db อื่น
มีตัวเลือกในการส่งออกข้อมูลเป็นส่วนแทรกลงในสคริปต์ SQL หรือไม่?
คำตอบ:
ใน SSMS ใน Object Explorer คลิกขวาที่ฐานข้อมูลคลิกขวาแล้วเลือก "Tasks" แล้วเลือก "สร้างสคริปต์"
สิ่งนี้จะช่วยให้คุณสร้างสคริปต์สำหรับตารางเดียวหรือทั้งหมดและหนึ่งในตัวเลือกคือ "ข้อมูลสคริปต์" หากคุณตั้งค่าเป็น TRUE ตัวช่วยสร้างจะสร้างสคริปต์ด้วยคำสั่ง INSERT INTO () สำหรับข้อมูลของคุณ
หากใช้ 2008 R2 หรือ 2012 เรียกว่าอย่างอื่นดูภาพหน้าจอด้านล่างนี้
เลือก "ประเภทของข้อมูลต่อสคริปต์" ซึ่งอาจเป็น "ข้อมูลเท่านั้น", "สคีมาและข้อมูล" หรือ "สคีมาเท่านั้น" - ค่าเริ่มต้น)
จากนั้นมีแพ็คเกจ" SSMS Addin " บน Codeplex (รวมถึงแหล่งที่มา) ซึ่งรับประกันการใช้งานที่เหมือนกันและอีกไม่กี่อย่าง (เช่นการค้นหาอย่างรวดเร็ว ฯลฯ )
เพื่อความชัดเจนมากเกินไปหลังจากทำตามคำแนะนำของ marc_s ที่นี่ ...
ใน SSMS ใน Object Explorer ให้คลิกขวาที่ฐานข้อมูลคลิกขวาแล้วเลือก "Tasks" จากนั้น "สร้างสคริปต์"
... จากนั้นฉันจะเห็นหน้าจอวิซาร์ดที่มี " บทนำเลือกวัตถุตั้งค่าตัวเลือกการเขียนบทสรุปและบันทึกหรือเผยแพร่สคริปต์ " ด้วยปุ่มก่อนหน้าถัดไปเสร็จสิ้นยกเลิกที่ด้านล่าง
ในขั้นตอนการตั้งค่าตัวเลือกการสคริปต์คุณต้องคลิก "ขั้นสูง"เพื่อรับหน้าพร้อมตัวเลือก จากนั้นดังที่Ghlouwได้กล่าวถึงตอนนี้คุณเลือก "ประเภทของข้อมูลไปยังสคริปต์" และกำไร
ถ้าคุณใช้ SQLServer 2008R2 คุณจะต้องตั้งค่าประเภทข้อมูลเป็นสคริปต์
หากคุณใช้ SQL Server 2008 R2 ตัวเลือกในตัวในการทำเช่นนี้ใน SSMS เนื่องจาก marc_s อธิบายไว้ข้างต้นเปลี่ยนไปเล็กน้อย แทนที่จะเลือกScript data = true
ตามที่แสดงในแผนภาพตอนนี้มีตัวเลือกใหม่ที่เรียกว่า"Types of data to script"
อยู่เหนือการจัดกลุ่ม "ตาราง / มุมมองตัวเลือก" ที่นี่คุณสามารถเลือกข้อมูลสคริปต์เท่านั้นสคีมาและข้อมูลหรือสคีมาเท่านั้น ทำงานเหมือนจับใจ
สำหรับผู้ที่กำลังมองหาเวอร์ชั่นบรรทัดคำสั่ง Microsoft เปิดmssql-scripter
ให้ทำดังนี้:
$ pip install mssql-scripter
# Generate DDL scripts for all database objects and DML scripts (INSERT statements)
# for all tables in the Adventureworks database and save the script files in
# the current directory
$ mssql-scripter -S localhost -d AdventureWorks -U sa --schema-and-data \
-f './' --file-per-object
เพียงอัปเดตสกรีนช็อตเพื่อช่วยเหลือผู้อื่นในขณะที่ฉันใช้ v18 รุ่นใหม่ประมาณปี 2019
ที่นี่คุณสามารถเลือกตารางบางอย่างหรือไปกับค่าเริ่มต้นของทั้งหมด สำหรับความต้องการของฉันฉันกำลังแสดงเพียงหนึ่งตาราง
ถัดไปมี "ตัวเลือกการเขียนสคริปต์" ที่คุณสามารถเลือกไฟล์ที่ส่งออกและอื่น ๆ เช่นเดียวกับในหลาย ๆ คำตอบข้างต้น (อีกครั้งฉันแค่ปัดคำตอบเก่าสำหรับใหม่ v18.4 Studio จัดการเซิร์ฟเวอร์ SQL) สิ่งที่เราต้องการจริงๆ อยู่ใต้ปุ่ม "ขั้นสูง" เพื่อจุดประสงค์ของตัวเองฉันต้องการเพียงแค่ข้อมูล
ในที่สุดก็มีบทสรุปทบทวนก่อนที่จะดำเนินการ หลังจากดำเนินการรายงานสถานะของการดำเนินการจะปรากฏขึ้น
คุณสามารถตรวจสอบ "Data Scripter Add-In" สำหรับ SQL Server Management Studio 2008 ได้จาก:
http://www.mssql-vehicle-data.com/SSMS
รายการคุณสมบัติของพวกเขา:
มันได้รับการพัฒนาใน SSMS 2008 และไม่รองรับเวอร์ชัน 2005 ในเวลานี้ (ในไม่ช้า!)
ส่งออกข้อมูลไปยัง T-SQL สำหรับไวยากรณ์ MSSQL และ MySQL อย่างรวดเร็ว
รองรับ CSV, TXT, XML! ใช้ศักยภาพพลังงานและความเร็วอย่างเต็มที่ที่ SQL มีให้
อย่ารอให้ Access หรือ Excel ทำการเขียนสคริปต์ให้คุณซึ่งอาจใช้เวลาหลายนาทีในการทำ - ให้ SQL Server ทำเพื่อคุณและคาดเดาการทำงานทั้งหมดของการส่งออกข้อมูล!
กำหนดค่าเอาต์พุตข้อมูลของคุณเพื่อการสำรองข้อมูลที่รวดเร็วการจัดการ DDL และอื่น ๆ ...
เปลี่ยนชื่อตารางและสกีมาฐานข้อมูลตามความต้องการของคุณได้อย่างรวดเร็วและมีประสิทธิภาพ
ส่งออกชื่อคอลัมน์หรือเพียงสร้างข้อมูลโดยไม่มีชื่อ
คุณสามารถเลือกคอลัมน์ที่จะสคริปต์
คุณสามารถเลือกชุดข้อมูลย่อย (WHERE clause)
คุณสามารถเลือกการเรียงลำดับข้อมูล (ORDER BY clause)
อรรถประโยชน์การสำรองข้อมูลที่ยอดเยี่ยมสำหรับการดำเนินการดีบั๊กฐานข้อมูลที่ต้องการการจัดการข้อมูล อย่าสูญเสียข้อมูลขณะทำการทดสอบ จัดการกับข้อมูลได้ทันที!
ทั้งหมดข้างต้นเป็นสิ่งที่ดี แต่ถ้าคุณต้องการ
จากนั้นเคล็ดลับต่อไปนี้เป็นเพียงวิธีเดียวเท่านั้น
ก่อนอื่นเรียนรู้วิธีสร้างสปูลไฟล์หรือส่งออกชุดผลลัพธ์จากไคลเอนต์บรรทัดคำสั่ง db แหล่งที่มา สองเรียนรู้วิธีดำเนินการคำสั่ง sql บน db ปลายทาง
สุดท้ายสร้างคำสั่งแทรก (และคำสั่งอื่น ๆ ) สำหรับฐานข้อมูลปลายทางโดยใช้สคริปต์ sql ในฐานข้อมูลต้นทาง เช่น
SELECT '-- SET the correct schema' FROM dual;
SELECT 'USE test;' FROM dual;
SELECT '-- DROP TABLE IF EXISTS' FROM dual;
SELECT 'IF OBJECT_ID(''table3'', ''U'') IS NOT NULL DROP TABLE dbo.table3;' FROM dual;
SELECT '-- create the table' FROM dual;
SELECT 'CREATE TABLE table3 (column1 VARCHAR(10), column2 VARCHAR(10));' FROM dual;
SELECT 'INSERT INTO table3 (column1, column2) VALUES (''', table1.column1, ''',''', table2.column2, ''');' FROM table1 JOIN table2 ON table2.COLUMN1 = table1.COLUMN1;
ตัวอย่างข้างต้นถูกสร้างขึ้นสำหรับฐานข้อมูลของ Oracle ซึ่งจำเป็นต้องใช้การใช้งานคู่สำหรับการเลือกแบบไม่มีตาราง
ชุดผลลัพธ์จะมีสคริปต์สำหรับ db ปลายทาง
นี่คือตัวอย่างของการสร้างสคริปต์การย้ายข้อมูลโดยใช้เคอร์เซอร์เพื่อทำซ้ำตารางต้นฉบับ
SET NOCOUNT ON;
DECLARE @out nvarchar(max) = ''
DECLARE @row nvarchar(1024)
DECLARE @first int = 1
DECLARE cur CURSOR FOR
SELECT '(' + CONVERT(CHAR(1),[Stage]) + ',''' + [Label] + ''')'
FROM CV_ORDER_STATUS
ORDER BY [Stage]
PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS ON'
PRINT 'GO'
PRINT 'INSERT INTO dbo.CV_ORDER_STATUS ([Stage],[Label]) VALUES';
OPEN cur
FETCH NEXT FROM cur
INTO @row
WHILE @@FETCH_STATUS = 0
BEGIN
IF @first = 1
SET @first = 0
ELSE
SET @out = @out + ',' + CHAR(13);
SET @out = @out + @row
FETCH NEXT FROM cur into @row
END
CLOSE cur
DEALLOCATE cur
PRINT @out
PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS OFF'
PRINT 'GO'
หลังจากค้นหามากมันเป็นภาพที่ดีที่สุดของฉัน:
หากคุณมีข้อมูลจำนวนมากและต้องการสคริปต์ที่กะทัดรัดและสวยงามลองใช้: SSMS Tools Pack
มันสร้างการรวมคำสั่งที่เลือกทั้งหมดเพื่อแทรกรายการลงในตารางเป้าหมายและจัดการธุรกรรมได้ค่อนข้างดี