Bagaimana cara memasukkan banyak file excel ke dalam beberapa tabel di ssis?

Saya telah membuat file sumber Excel dan menamakannya ExcelFile. xls. File Excel ini memiliki lima lembar dan kelima lembar tersebut berisi data

Baris pertama dari setiap lembar Excel berisi nama kolom dan data dimulai dari baris kedua

File Excel dengan lima lembar

Pertama, buat Paket SSIS dan Anda dapat memberi nama apa pun yang Anda inginkan

membuat paket

Kemudian, buat variabelnya. Klik kanan pada tugas aliran Kontrol, pilih menu variabel dan tambahkan variabel kemudian tetapkan Nama Variabel, Lingkup, Tipe data, dan Nilai

membuat variabel

Tambahkan Kontainer Foreach Loop di Tugas Aliran Kontrol. dan klik kanan pada wadah Foreach Loop dan konfigurasikan

Wadah putaran depan

Edit Foreach Loop Container dan di bagian Collection ubah Enumerator menjadi “Foreach ADO. NET Schema Rowset Enumerator”

Konfigurasi Enumerator ke “Foreach ADO. NET Schema Rowset Enumerator”

Buat koneksi baru, di bagian Koleksi

Buat Koneksi Baru

Untuk membuat pengelola koneksi baru, klik baru lalu ok

Manajer koneksi data

Di Pengelola Sambungan, pilih “Microsoft Jet 4. 0 Penyedia OLE DB” di bawah penyedia

pilih “Microsoft Jet 4. 0 Penyedia OLE DB”

Menelusuri file sumber Excel adalah ExcelFile. xls

Telusuri file sumber

Di Connection Manager, di bawah Semua bagian, perbarui Extended Properties menjadi “Excel 8. 0”. lalu klik oke

perbarui properti yang diperluas

ubah nilai Schema menjadi “Tables” di bawah bagian Collection untuk Foreach Loop Container

Ubah Nilai Skema menjadi Tabel

Di Pemetaan Variabel, pilih "User. ExcelFilePath” variabel dan nilai Indeks 2

Pemetaan variabel

Tambahkan Tugas Aliran Data di dalam Foreach Loop Container

menambahkan tugas aliran data

Tambahkan sumber Excel di Tugas Aliran Data. dan Edit file Sumber Excel

Tambahkan Sumber Excel

buat koneksi ke file sumber Excel

Manajer Koneksi

Telusuri file Excel dan pilih baris pertama memiliki nama kolom

Telusuri File Excel

Di Connection Manager, ubah mode akses Data ke "Nama tabel atau variabel nama tampilan"

Pilih mode akses Data

pilih "Pengguna. ExcelFilePath” dalam nama Variabel

Pilih Nama Variabel

Di bagian Kolom, ada tiga kolom di dalam ID File Excel, Nama, dan GENDER. lalu oke

Seret dan Lepas Tujuan OLEDB. Sekarang Hubungkan output dari input sumber Excel ke Tujuan OLEDB. lalu Konfigurasikan Tujuan OLEDB

Edit Tujuan OLEDB

Buat koneksi ke database klik baru

Untuk membuat pengelola koneksi baru, klik baru. lalu beri nama server dan nama databasenya adalah MyDB. lalu klik oke

Buat Manajer Koneksi OLEDB baru

Di Connection Manager, ubah mode akses Data ke "Table or View"

Pilih mode akses Data

Di Connection Manager, Buat Tabel Baru di database

pilih tabel atau tampilan

Buat tabel baru di database. Nama Database adalah Tujuan. lalu klik oke

Buat Tabel di database

Pilih Nama tabel atau tampilan. klik oke

Pada Bagian Pemetaan, Kolom masukan sudah dimana dengan kolom tujuan. klik oke

Jalankan Paket SSIS

Jalankan Paket SSIS

Paket SSIS berhasil dieksekusi

Paket berhasil dijalankan

Jalankan Permintaan SQL. kami memiliki 14 catatan dalam tabel SQL Server

4 record pertama dimasukkan dari Excel Sheet1 kemudian 2 record berikutnya dimasukkan dari Sheet2 dan 3 record berikutnya dimasukkan dari sheet3 dan 2 record berikutnya dimasukkan dari Sheet4 dan 3 record terakhir dimasukkan dari Sheet5

Saya diminta memuat banyak file Excel, masing-masing dengan beberapa lembar kerja Excel. Saya menemukan cara yang sangat mudah untuk menyelesaikan ini di SSIS menggunakan Script Task. Artikel ini akan menjelaskan bagaimana saya melakukannya

Untuk contoh ini, saya memiliki dua file Excel, File1. xlsx dan File2. xlsx, seperti yang ditunjukkan di sini

Setiap File Excel memiliki tiga lembar, yaitu lembar1, lembar2, dan lembar3. Setiap lembar memiliki dua kolom, Nama file dan nama lembar dan saya telah memasukkan satu baris di setiap lembar seperti yang ditunjukkan di bawah ini

Setiap lembar kerja Excel harus memiliki skema yang sama untuk setiap data yang disimpan

Untuk memuat data, kita mulai dengan membuat tabel dengan struktur yang sesuai dengan setiap sheet

CREATE TABLE dbo.Excelfiledata
( 
[Filename] varchar(50),
[Sheetname] vawrchar(50)
);

Selanjutnya kita membuat paket SSIS. Buka Visual Studio dan buat proyek Layanan Integrasi baru

Dalam proyek, buat dua variabel tipe data string, seperti yang ditunjukkan di bawah ini. Masukkan jalur folder untuk file Excel di Variabel FolderPath dan nama tabel yang dibuat di atas dalam variabel TableName

Di Connection Manager, tambahkan ADO baru. Koneksi bersih dan berikan nama instance dan nama database, bersama dengan kredensial lain yang diperlukan

Catatan. Beri nama koneksi sebagai Sqlconnection. Ini ditunjukkan di bawah ini

Selanjutnya, kami menyeret Tugas Script ke desktop Control Flow

Buka Tugas Skrip dan di bagian Skrip, kita perlu mengedit properti Readonlyvariables. Masukkan variabel yang dibuat di atas, dengan User. struktur nama variabel. Ini ditunjukkan pada gambar di bawah ini

Pilih "Edit Script" dan salin kode C# berikut ke dalam kotak edit. Kode ini akan mengulang semua file, membuka masing-masing, dan kemudian mengulang setiap lembar

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.IO;
using System.Data.OleDb;
using System.Data.SqlClient;
public void Main()
{
            String FolderPath = Dts.Variables["User::FolderPath"].Value.ToString();
            String TableName = Dts.Variables["User::TableName"].Value.ToString();
            var directory = new DirectoryInfo(FolderPath);
            FileInfo[] files = directory.GetFiles();
            //Declare and initilize variables
            string fileFullPath = "";
            //Get one Book(Excel file at a time)
            foreach (FileInfo file in files)
            {
                fileFullPath = FolderPath + "\\" + file.Name;
                //Create Excel Connection
                string ConStr;
                string HDR;
                HDR = "YES";
                ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileFullPath + ";Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=0\"";
                //Get sheetnames
                OleDbConnection cnn = new OleDbConnection(ConStr);                
                cnn.Open();
                DataTable dtSheet = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                string sheetname;
                sheetname = "";
                foreach (DataRow drSheet in dtSheet.Rows)
                {
                    if (drSheet["TABLE_NAME"].ToString().Contains("$"))
                    {
                        sheetname = drSheet["TABLE_NAME"].ToString();
                    }
                    //ADO.NET Connection
                    SqlConnection myADONETConnection = new SqlConnection();
                    myADONETConnection = (SqlConnection)(Dts.Connections["Sqlconnection"].AcquireConnection(Dts.Transaction) as SqlConnection);

                    //Get data from Excel Sheet
                    OleDbCommand oconn1 = new OleDbCommand("select * from [" + sheetname + "]", cnn);
                    OleDbDataAdapter adp1 = new OleDbDataAdapter(oconn1);
                    DataTable dt1 = new DataTable();
                    adp1.Fill(dt1);
                   
                    //Load data into Table  
                    using (SqlBulkCopy BC = new SqlBulkCopy(myADONETConnection))
                    {
                        BC.DestinationTableName = "dbo." + TableName;
                        foreach (var column in dt1.Columns)
                            BC.ColumnMappings.Add(column.ToString(), column.ToString());
                        BC.WriteToServer(dt1);
                    }
                }
                cnn.Close();

            }
_

Simpan dan jalankan paket. Jika Anda memiliki jalur dan nama variabel yang benar, Anda akan melihat eksekusi paket yang berhasil

Bagaimana cara memuat banyak file ke dalam beberapa tabel di SSIS?

Solusi. .
Buat Paket SSIS baru. .
Bawa Foreach Loop Container ke Control Flow Pane dan Set Directory=VarSourceFolder seperti yang ditunjukkan di bawah ini. .
Bawa Data Flow Task ke dalam Foreach Loop Container dan buka dengan mengklik dua kali. .
Seret Transformasi kolom Berasal dan sambungkan Sumber File Datar ke sana

Bagaimana cara memuat banyak lembar dari beberapa file excel ke tabel berbeda dalam paket SSIS?

Buat paket SSIS untuk impor data dari beberapa file Excel .
BUAT TABEL [dbo]. [Impor Data SSIS](
[EmpID] [int] NULL,
[EmpName] [varchar](50) NULL,
[Sumber] [nvarchar](50) NULL
) DI [UTAMA]

Bagaimana cara memuat beberapa lembar excel dari file excel ke tabel SQL Server?

Contoh yang berhasil - Impor dari beberapa lembar kerja Excel ke Tabel SQL Server .
LANGKAH 1 - Buat Tugas Baru. .
LANGKAH 2 - Menghubungkan ke SQL Server. .
LANGKAH 3 - Pilih tabel tujuan. .
LANGKAH 4 Buat sumber data ODBC. .
LANGKAH 5 - Pemetaan Kolom. .
LANGKAH 9 - Uji Tugas. .
LANGKAH 11 - Tambahkan aturan validasi data

Bagaimana cara memuat banyak file excel dengan nama sheet berbeda di SSIS?

Solusi. .
Buat Paket SSIS Anda dan kemudian buat variabel di bawah ini
Langkah 2. Buat ADO. NET Connection Manager seperti yang ditunjukkan di bawah ini di Paket SSIS Anda. .
Langkah 3. Memetakan variabel dalam Tugas Skrip. .
Klik Tombol Edit Skrip dan kemudian salin kode di bawah ini ke Editor Tugas Skrip Anda
Tekan tombol Save di Script Task Editor lalu tutup