นำเข้าไฟล์ CSV ลงใน SQL Server


186

ฉันต้องการความช่วยเหลือในการนำเข้า.csvไฟล์ไปยัง SQL Server โดยใช้BULK INSERTและฉันมีคำถามพื้นฐานเล็กน้อย

ปัญหาที่พบ:

  1. ข้อมูลไฟล์ CSV อาจมี,(เครื่องหมายจุลภาค) อยู่ระหว่าง (ตัวอย่าง: คำอธิบาย) ดังนั้นฉันจะนำเข้าจัดการข้อมูลเหล่านี้ได้อย่างไร

  2. หากลูกค้าสร้าง CSV จาก Excel ข้อมูลที่มีเครื่องหมายจุลภาคจะถูกปิดล้อมอยู่ภายใน""(เครื่องหมายคำพูดคู่) [ดังตัวอย่างด้านล่าง] ดังนั้นการนำเข้าสามารถจัดการกับสิ่งนี้ได้อย่างไร

  3. เราจะติดตามได้อย่างไรหากบางแถวมีข้อมูลไม่ดีซึ่งนำเข้าข้าม (นำเข้าข้ามแถวที่ไม่สามารถนำเข้าได้)

นี่คือตัวอย่าง CSV ที่มีส่วนหัว:

Name,Class,Subject,ExamDate,Mark,Description
Prabhat,4,Math,2/10/2013,25,Test data for prabhat.
Murari,5,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test."
sanjay,4,Science,,25,Test Only.

และคำสั่ง SQL ที่จะนำเข้า:

BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    TABLOCK
)

อาจเป็นSSMS: วิธีการนำเข้าข้อมูล (คัดลอก / วาง) จาก excelสามารถช่วยได้ (หากคุณไม่ต้องการใช้BULK NSERTหรือไม่มีสิทธิ์ใช้งาน)
เดนิส

คำตอบ:


169

การนำเข้า CSV เซิร์ฟเวอร์ SQL

1) ข้อมูลไฟล์ CSV อาจมี,(จุลภาค) อยู่ระหว่าง (ตัวอย่าง: คำอธิบาย) ดังนั้นฉันจะนำเข้าจัดการข้อมูลเหล่านี้ได้อย่างไร

สารละลาย

หากคุณกำลังใช้,(เครื่องหมายจุลภาค) เป็นตัวคั่นดังนั้นจะไม่มีวิธีแยกความแตกต่างระหว่างเครื่องหมายจุลภาคเป็นตัวคั่นฟิลด์และเครื่องหมายจุลภาคในข้อมูลของคุณ ผมจะใช้ที่แตกต่างกันเช่นFIELDTERMINATOR ||รหัสจะมีลักษณะเช่นนี้และจะจัดการเครื่องหมายจุลภาคและทับอย่างสมบูรณ์แบบ

2) หากลูกค้าสร้าง csv จาก excel ข้อมูลที่มีเครื่องหมายจุลภาคจะถูกปิดล้อมอยู่ภายใน" ... "(เครื่องหมายคำพูดคู่) [ดังตัวอย่างด้านล่าง] ดังนั้นการนำเข้าสามารถจัดการกับสิ่งนี้ได้อย่างไร

สารละลาย

หากคุณกำลังใช้การแทรกแบบ BULK จะไม่มีวิธีจัดการเครื่องหมายคำพูดคู่ข้อมูลจะถูกแทรกด้วยเครื่องหมายคำพูดคู่ลงในแถว หลังจากแทรกข้อมูลลงในตารางคุณสามารถแทนที่เครื่องหมายคำพูดคู่เหล่านั้นด้วย ' '

update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')

3) เราจะติดตามได้อย่างไรหากบางแถวมีข้อมูลไม่ดีซึ่งนำเข้าข้ามไป (การนำเข้าข้ามแถวที่ไม่สามารถนำเข้าได้) หรือไม่

สารละลาย

ในการจัดการแถวที่ไม่ได้โหลดลงในตารางเนื่องจากข้อมูลหรือรูปแบบที่ไม่ถูกต้องสามารถจัดการโดยใช้คุณสมบัติ ERRORFILEระบุชื่อไฟล์ข้อผิดพลาดมันจะเขียนแถวที่มีข้อผิดพลาดไปยังไฟล์ข้อผิดพลาด รหัสควรมีลักษณะเช่น

BULK INSERT SchoolsTemp
    FROM 'C:\CSVData\Schools.csv'
    WITH
    (
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'C:\CSVDATA\SchoolsErrorRows.csv',
    TABLOCK
    )

1
ขอบคุณสำหรับความช่วยเหลือ Reg Solution # 1: เราสามารถสร้าง || แยกไฟล์ค่าจาก Excel? เนื่องจากไฟล์ต้นฉบับประมาณ 20% ถูกสร้างขึ้นโดยใช้ Excel โดยไคลเอนต์
Prabhat

@Prabhat คุณจะโหลดไฟล์ Excel ลงใน SQL Server ได้อย่างไร
Vishwanath Dalvi

นี่ไม่ใช่ไฟล์ Excel ที่ฉันกำลังโหลด ลูกค้ากำลังใช้ Excel เพื่อสร้างไฟล์. CSV (สำหรับ 20% ของแหล่งข้อมูลที่แอปพลิเคชันของเรานำเข้า) และฉันถูกถามว่าเราสร้างไฟล์ csv โดยใช้ Excel ได้อย่างไรเราจะมี || เป็นตัวแยกค่าคอลัมน์?
Prabhat

หากคุณมีอิทธิพลต่อวิธีที่ไคลเอนต์สร้างไฟล์ CSV จาก Excel คุณสามารถสอนพวกเขาถึงวิธีการตั้งค่าตัวคั่นใน Excel (และก็ไม่มีไฟล์ที่คั่นด้วย "จุลภาค" อีกต่อไปมันจะคั่นไปป์ (|) ยกตัวอย่างเช่นให้ห่วงที่คุณกำลังกระโดดผ่านสำหรับเรื่องนี้และถ้าคุณมี SSIS - ฉันขอแนะนำให้คุณตรวจสอบมันรุ่นของ SQL Server 2012 และรุ่นที่ใหม่กว่ามีตัวออกแบบ SSIS ที่แข็งแกร่งมาก (เช่นใน VS 2012 และใหม่กว่า) เปิดใช้งานไคลเอนต์ของคุณเพียงแค่ส่งไฟล์ excel แทน csv.
qxotk

ฉันไม่แน่ใจว่านี่ถูกต้องทั้งหมด คุณสามารถจัดการกับเครื่องหมายคำพูดคู่ใน SQL Bulk Insert มี Stack Overflow ในหัวข้อนี้และสามารถใช้รูปแบบไฟล์เพื่อสอนตัวแทรกที่แตกต่างกันจำนวนมาก stackoverflow.com/questions/25726385/... advancesharp.com/blog/1083/...
DtechNet

33

ก่อนอื่นคุณต้องสร้างตารางในฐานข้อมูลที่คุณจะนำเข้าไฟล์ CSV หลังจากสร้างตารางแล้วให้ทำตามขั้นตอนด้านล่าง

•ล็อกอินเข้าสู่ฐานข้อมูลของคุณโดยใช้ SQL Server Management Studio

•คลิกขวาที่ฐานข้อมูลและเลือก Tasks -> Import Data...

•คลิกที่Next >ปุ่ม

Flat File Source•สำหรับแหล่งข้อมูลเลือก จากนั้นใช้ปุ่มเรียกดูเพื่อเลือกไฟล์ CSV ใช้เวลากำหนดค่าวิธีที่คุณต้องการนำเข้าข้อมูลก่อนคลิกที่Next >ปุ่ม

•สำหรับปลายทางให้เลือกผู้ให้บริการฐานข้อมูลที่ถูกต้อง (เช่น SQL Server 2012 คุณสามารถใช้ SQL Server Native Client 11.0) ป้อนชื่อเซิร์ฟเวอร์ ตรวจสอบUse SQL Server Authenticationปุ่มตัวเลือก ป้อนชื่อผู้ใช้รหัสผ่านและฐานข้อมูลก่อนคลิกที่Next >ปุ่ม

•ในหน้าต่าง Select Source Tables and Views คุณสามารถแก้ไขการแมปก่อนคลิกที่ Next >ปุ่ม

•ทำRun immediatelyเครื่องหมายที่ช่องทำเครื่องหมายและคลิกที่Next >ปุ่ม

• คลิกที่ Finishปุ่มเพื่อเรียกใช้แพคเกจ

พบข้างต้นบนเว็บไซต์นี้(ฉันใช้และทดสอบแล้ว):


30
มันจะดีถ้าคุณให้แหล่งที่มาไปยังหน้าที่คุณคัดลอก / วางคำตอบนี้จาก ...
SierraOscar

1
ไม่จำเป็นต้องสร้างตารางล่วงหน้าสามารถสร้างได้ในระหว่างกระบวนการนำเข้า
bside

1
ฉันรักที่คุณเพียงแค่ตัดและวางจากหน้าเว็บที่มีเส้นโอ้ดังที่มีประโยชน์"ใช้เวลาในการกำหนดค่าวิธีที่คุณต้องการข้อมูลที่จะนำเข้า" นั่นคือทุกสิ่งที่ฉันกำลังมองหา: ฉันดูเหมือนจะไม่สามารถกำหนดค่าได้เลย!
Auspex

โอ้และ"ตรวจสอบปุ่มตัวเลือกการใช้การพิสูจน์ตัวจริงของเซิร์ฟเวอร์ SQL"ผิดเนื่องจากคุณอาจต้องการใช้การรับรองความถูกต้องของ Windows เป็นอย่างดี แล้วแต่จำนวนใดจะเหมาะกับคุณ
Auspex

ขอบคุณพบขั้นตอนตามขั้นตอนด้วยภาพสำหรับการใช้ขั้นตอนข้างต้นคุ้มค่าดู: qawithexperts.com/article/sql/…
user3559462

23

2) หากไคลเอนต์สร้าง csv จาก excel ข้อมูลที่มีเครื่องหมายจุลภาคจะอยู่ใน "... " (เครื่องหมายคำพูดคู่) [ตามตัวอย่างด้านล่าง] ดังนั้นการนำเข้าสามารถจัดการกับสิ่งนี้ได้อย่างไร

คุณควรใช้ตัวเลือก FORMAT = 'CSV', FIELDQUOTE = '"':

BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
    FORMAT = 'CSV', 
    FIELDQUOTE = '"',
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    TABLOCK
)

1
โปรดทราบว่าตัวระบุ FORMAT มีให้บริการตั้งแต่ SQL Server 2017 เท่านั้น
kristianp

13

วิธีที่ดีที่สุดเร็วที่สุดและง่ายที่สุดในการแก้ไขปัญหาเครื่องหมายจุลภาคในข้อมูลคือการใช้ Excel เพื่อบันทึกไฟล์ที่คั่นด้วยเครื่องหมายจุลภาคหลังจากตั้งค่าตัวแยกรายการของ Windows ให้เป็นอย่างอื่นที่ไม่ใช่จุลภาค (เช่นไพพ์) สิ่งนี้จะสร้างไฟล์แยก (หรือไฟล์อะไรก็ได้) สำหรับคุณที่คุณสามารถนำเข้าได้ นี้มีการอธิบายที่นี่


4

ภาคเรียนแรกคุณต้องนำเข้าไฟล์ CSV ลงในตารางข้อมูล

จากนั้นคุณสามารถแทรกแถวจำนวนมากโดยใช้ SQLBulkCopy

using System;
using System.Data;
using System.Data.SqlClient;

namespace SqlBulkInsertExample
{
    class Program
    {
      static void Main(string[] args)
        {
            DataTable prodSalesData = new DataTable("ProductSalesData");

            // Create Column 1: SaleDate
            DataColumn dateColumn = new DataColumn();
            dateColumn.DataType = Type.GetType("System.DateTime");
            dateColumn.ColumnName = "SaleDate";

            // Create Column 2: ProductName
            DataColumn productNameColumn = new DataColumn();
            productNameColumn.ColumnName = "ProductName";

            // Create Column 3: TotalSales
            DataColumn totalSalesColumn = new DataColumn();
            totalSalesColumn.DataType = Type.GetType("System.Int32");
            totalSalesColumn.ColumnName = "TotalSales";

            // Add the columns to the ProductSalesData DataTable
            prodSalesData.Columns.Add(dateColumn);
            prodSalesData.Columns.Add(productNameColumn);
            prodSalesData.Columns.Add(totalSalesColumn);

            // Let's populate the datatable with our stats.
            // You can add as many rows as you want here!

            // Create a new row
            DataRow dailyProductSalesRow = prodSalesData.NewRow();
            dailyProductSalesRow["SaleDate"] = DateTime.Now.Date;
            dailyProductSalesRow["ProductName"] = "Nike";
            dailyProductSalesRow["TotalSales"] = 10;

            // Add the row to the ProductSalesData DataTable
            prodSalesData.Rows.Add(dailyProductSalesRow);

            // Copy the DataTable to SQL Server using SqlBulkCopy
            using (SqlConnection dbConnection = new SqlConnection("Data Source=ProductHost;Initial Catalog=dbProduct;Integrated Security=SSPI;Connection Timeout=60;Min Pool Size=2;Max Pool Size=20;"))
            {
                dbConnection.Open();
                using (SqlBulkCopy s = new SqlBulkCopy(dbConnection))
                {
                    s.DestinationTableName = prodSalesData.TableName;

                    foreach (var column in prodSalesData.Columns)
                        s.ColumnMappings.Add(column.ToString(), column.ToString());

                    s.WriteToServer(prodSalesData);
                }
            }
        }
    }
}

เสื้อคลุมที่เป็นมิตรกับผู้ใช้มากขึ้นอาจจะล้อมรอบคลาส BulkCopy busybulkcopy.codeplex.com
busytools

3

นี่คือวิธีที่ฉันจะแก้มัน:

  1. เพียงบันทึกไฟล์ CSV ของคุณเป็นแผ่น XLS ใน excel (โดยการทำเช่นนั้นคุณไม่ต้องกังวลกับตัวคั่นรูปแบบสเปรดชีตของ Excel จะถูกอ่านเป็นตารางและนำเข้าสู่ตาราง SQL โดยตรง)

  2. นำเข้าไฟล์โดยใช้ SSIS

  3. เขียนสคริปต์ที่กำหนดเองในเครื่องมือจัดการการนำเข้าเพื่อละเว้น / แก้ไขข้อมูลที่คุณกำลังมองหา (หรือเรียกใช้สคริปต์ต้นแบบเพื่อกลั่นกรองข้อมูลที่คุณต้องการลบ)

โชคดี.


3
Downvote: การนำเข้าไฟล์ XLS ด้วย SSIS นั้นแย่มาก SSIS จะพยายามเดาที่ประเภทข้อมูลของข้อมูล Excel แต่สามารถเดาได้ผิดและไม่มีอะไรที่คุณสามารถทำได้ ดีกว่าที่จะใช้ CSV
NReilingh

ฉันแนะนำ csv ด้วย แต่ถ้าคุณอ่านสถานการณ์ของ OP เขามีสถานการณ์พิเศษโดยเฉพาะอย่างยิ่งกับตัวคั่นที่ไม่ใช่ปัญหาของ xls ชีต โดยทั่วไปสถานการณ์กรณีพิเศษเช่นนี้ไม่จำเป็นต้องมีโซลูชันที่ครอบคลุม แต่การแก้ไขที่เก็บรักษาข้อมูล ขณะอัปโหลดไฟล์ SSIS ให้คุณเลือกการแมปข้อมูลระหว่างตารางต้นทางและปลายทางได้อีกครั้ง ด้วยเหตุนี้จึงแนะนำให้ใช้วิธีนี้ในการแฮ็กแบบรวดเร็ว
Zee

1
SSIS สามารถจัดการตัวคั่นข้อความ CSV แล้ว หากคุณกำลังใช้ SSIS อยู่ปัญหาของการบันทึก CSV ของคุณในฐานะ XLS ก่อนนั้นจะทำให้ฉันรู้สึกเหมือนเป็นการเพิ่มความแตกแยกที่ไม่มีเหตุผล
NReilingh

นอกจากนี้ฉันยังมีไฟล์ CSV ที่ใหญ่เกินไปสำหรับ Excel เป็นประจำ
Auspex

3

เนื่องจากไม่ได้ใช้ตัวช่วยสร้างการนำเข้า SQL ขั้นตอนจะเป็นดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

  1. คลิกขวาที่ฐานข้อมูลในตัวเลือกงานเพื่อนำเข้าข้อมูล

  2. เมื่อตัวช่วยสร้างเปิดขึ้นเราจะเลือกประเภทของข้อมูลที่จะบอกเป็นนัย ในกรณีนี้มันจะเป็น

แหล่งไฟล์แบบเรียบ

เราเลือกไฟล์ CSV คุณสามารถกำหนดประเภทข้อมูลของตารางใน CSV ได้ แต่วิธีที่ดีที่สุดคือนำมาจาก CSV

  1. คลิกถัดไปและเลือกตัวเลือกสุดท้ายนั่นคือ

ไคลเอ็นต์ SQL

ขึ้นอยู่กับประเภทของการรับรองความถูกต้องที่เราเลือกเมื่อทำเสร็จแล้วจะมีตัวเลือกที่สำคัญมากมาให้

  1. เราสามารถกำหนด id ของตารางใน CSV (ขอแนะนำให้คอลัมน์ของ CSV ควรเรียกว่าเหมือนกับเขตข้อมูลในตาราง) ในตัวเลือกการแก้ไขการแมปเราสามารถดูตัวอย่างของแต่ละตารางด้วยคอลัมน์ของสเปรดชีตหากเราต้องการให้ตัวช่วยสร้างใส่รหัสโดยค่าเริ่มต้นเราจะไม่เลือกตัวเลือก

เปิดใช้งานการแทรกรหัส

(โดยปกติจะไม่เริ่มต้นจาก 1) แต่ถ้าเรามีคอลัมน์ที่มีรหัสใน CSV เราเลือกเปิดใช้งานการแทรกรหัสขั้นตอนต่อไปคือการสิ้นสุดตัวช่วยสร้างเราสามารถตรวจสอบการเปลี่ยนแปลงได้ที่นี่

ในอีกทางหนึ่งในหน้าต่างต่อไปนี้อาจมาแจ้งเตือนหรือคำเตือนในอุดมคติคือการละเว้นนี้เฉพาะในกรณีที่พวกเขาออกจากข้อผิดพลาดมีความจำเป็นต้องให้ความสนใจ

การเชื่อมโยงนี้มีภาพ


0

นำเข้าไฟล์ลงใน Excel โดยเปิด Excel ครั้งแรกจากนั้นไปที่ DATA นำเข้าจากไฟล์ TXT เลือกส่วนขยาย csv ซึ่งจะเก็บค่า 0 นำหน้าไว้และบันทึกคอลัมน์นั้นเป็น TEXT เนื่องจาก excel จะลดค่านำหน้า 0 (อย่าดับเบิลคลิก เพื่อเปิดด้วย Excel หากคุณมีข้อมูลตัวเลขในเขตข้อมูลที่ขึ้นต้นด้วย 0 [ศูนย์]) จากนั้นเพียงบันทึกเป็นไฟล์ข้อความที่คั่นด้วยแท็บ เมื่อคุณนำเข้าสู่ excel คุณจะได้รับตัวเลือกในการบันทึกเป็น GENERAL, TEXT และอื่น ๆ เลือก TEXT เพื่อให้คำพูดอยู่ตรงกลางของสตริงในฟิลด์เช่น YourCompany, LLC ยังคงอยู่ ...

BULK INSERT dbo.YourTableName
FROM 'C:\Users\Steve\Downloads\yourfiletoIMPORT.txt'
WITH (
FirstRow = 2, (if skipping a header row)
FIELDTERMINATOR = '\t',
ROWTERMINATOR   = '\n'
)

ฉันหวังว่าฉันจะสามารถใช้ฟังก์ชัน FORMAT และ Fieldquote แต่ดูเหมือนจะไม่ได้รับการสนับสนุนใน SSMS เวอร์ชันของฉัน


0

ฉันรู้ว่ามีคำตอบที่ยอมรับ แต่ยังฉันต้องการแบ่งปันสถานการณ์ของฉันที่อาจช่วยให้ใครบางคนในการแก้ปัญหาเครื่องมือของพวกเขา

  • ASP.NET
  • แนวทางการใช้รหัส EF
  • SSMS
  • EXCEL

สถานการณ์ที่ ฉันกำลังโหลดชุดข้อมูลซึ่งอยู่ในรูปแบบ CSV ซึ่งภายหลังจะปรากฏในมุมมองฉันพยายามที่จะใช้การโหลดจำนวนมาก แต่ฉันไม่สามารถโหลดตามที่BULK LOADใช้

FIELDTERMINATOR = ','

และเซลล์ Excel ก็ใช้เช่นกัน, แต่ฉันก็ไม่สามารถใช้Flat file sourceโดยตรงเพราะฉันใช้Code-First Approachและทำสิ่งนั้นเพียงสร้างแบบจำลองใน SSMS DB ไม่ใช่ในรูปแบบที่ฉันต้องใช้คุณสมบัติในภายหลัง

สารละลาย

  1. ฉันใช้แหล่งไฟล์แบบแฟลตและสร้างตารางฐานข้อมูลจากไฟล์ CSV ( คลิกขวาที่ฐานข้อมูลใน SSMS -> นำเข้าไฟล์แฟลต -> เลือกพา ธ CSV และทำการตั้งค่าทั้งหมดตามที่แนะนำ )
  2. Made Model Class ใน Visual Studio (คุณต้องเก็บประเภทข้อมูลและชื่อทั้งหมดเหมือนกับไฟล์ CSV ที่โหลดใน sql)
  3. ใช้Add-Migrationในคอนโซลแพ็คเกจของ NuGet
  4. อัพเดทฐานข้อมูล

0

ฉันรู้ว่านี่ไม่ใช่คำตอบที่ถูกต้องสำหรับคำถามข้างต้น แต่สำหรับฉันมันเป็นฝันร้ายเมื่อฉันพยายามคัดลอกข้อมูลจากฐานข้อมูลหนึ่งซึ่งอยู่ที่เซิร์ฟเวอร์แยกไปยังเครื่องของฉัน

ฉันพยายามทำเช่นนั้นโดยการส่งออกข้อมูลจากเซิร์ฟเวอร์ไปยังCSV/txtก่อนแล้วจึงนำเข้าข้อมูลในตารางท้องถิ่นของฉัน

โซลูชันทั้งสอง: เมื่อมีการจดคำถามเพื่อนำเข้าCSVหรือใช้ตัวช่วยสร้างการนำเข้าข้อมูล SSMS มักจะเกิดข้อผิดพลาด (ข้อผิดพลาดเป็นเรื่องทั่วไปมากโดยบอกว่ามีปัญหาในการแยกวิเคราะห์) และถึงแม้ว่าฉันไม่ได้ทำอะไรเป็นพิเศษแค่ส่งออกไปยังCSVแล้วก็พยายามที่จะนำเข้า CSVสู่ท้องถิ่นDBข้อผิดพลาดอยู่ที่นั่นเสมอ

ฉันพยายามที่จะดูที่ส่วนการทำแผนที่และตัวอย่างข้อมูล แต่ก็มีปัญหาใหญ่อยู่เสมอ และฉันรู้ว่าปัญหาหลักคือมาจากหนึ่งในtableคอลัมน์ที่มีJSONและSQLparser รักษาที่ผิด

ในที่สุดฉันก็คิดวิธีแก้ปัญหาที่แตกต่างออกไปและต้องการแบ่งปันในกรณีที่คนอื่นจะมีปัญหาคล้ายกัน


สิ่งที่ฉันทำคือฉันใช้ตัวช่วยสร้างการส่งออกบนเซิร์ฟเวอร์ภายนอก

นี่คือขั้นตอนในการทำซ้ำกระบวนการเดียวกัน:
1) คลิกขวาที่ฐานข้อมูลและเลือกTasks -> Export Data...

2) เมื่อตัวช่วยสร้างจะเปิดขึ้นให้เลือกถัดไปและแทนที่ "แหล่งข้อมูล:" เลือก "ไคลเอนต์ Native ของเซิร์ฟเวอร์ SQL"

ป้อนคำอธิบายรูปภาพที่นี่

ในกรณีของเซิร์ฟเวอร์ภายนอกคุณจะต้องเลือก "ใช้การพิสูจน์ตัวจริงของเซิร์ฟเวอร์ SQL" สำหรับ "โหมดการรับรองความถูกต้อง:"

3) หลังจากกดปุ่มถัดไปคุณจะต้องเลือกDestionation
หากต้องการเลือกอีกครั้ง "SQL Native Native Client"
เวลานี้คุณสามารถให้ท้องถิ่นของคุณ (หรือภายนอกอื่น ๆDB)DB )

ป้อนคำอธิบายรูปภาพที่นี่

4) หลังจากกดปุ่มถัดไปคุณมีสองตัวเลือกในการคัดลอกตารางทั้งหมดจากหนึ่งDBไปยังอีกหรือเขียนแบบสอบถามเพื่อระบุข้อมูลที่แน่นอนที่จะคัดลอก ในกรณีของฉันฉันไม่ต้องการทั้งตาราง (มันใหญ่เกินไป) แต่มีบางส่วนดังนั้นฉันเลือก "เขียนแบบสอบถามเพื่อระบุข้อมูลที่จะถ่ายโอน"

ป้อนคำอธิบายรูปภาพที่นี่

ฉันขอแนะนำให้เขียนและทดสอบแบบสอบถามในเครื่องมือแก้ไขแบบสอบถามแยกต่างหากก่อนที่จะย้ายไปยังตัวช่วยสร้าง

5) และสุดท้ายคุณต้องระบุตารางปลายทางที่จะทำการเลือกข้อมูล

ป้อนคำอธิบายรูปภาพที่นี่

ฉันแนะนำให้ปล่อยไว้เป็นชื่อที่[dbo].[Query]กำหนดเองหรือTableในกรณีที่คุณมีข้อผิดพลาดในการส่งออกข้อมูลหรือหากคุณไม่แน่ใจเกี่ยวกับข้อมูลและต้องการวิเคราะห์เพิ่มเติมก่อนที่จะย้ายไปยังตารางที่แน่นอนที่คุณต้องการ

และตอนนี้ตรงไปที่ส่วนท้ายของตัวช่วยสร้างโดยการกดปุ่มถัดไป / เสร็จสิ้นปุ่ม


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.