Saran untuk Impor Data Massal

8

Kami sedang mengerjakan proyek yang membutuhkan data impor dari lembar kerja Excel setiap hari. Data akan diimpor dari templat yang ditentukan sebelumnya dan apa yang kami pikirkan, pertama kami akan mengunggah data dalam tabel sementara dan melakukan operasi pembersihan (menghapus informasi yang tidak perlu, menambahkan baris baru di tabel induk dan mendapatkan FK mereka, dll.).

  • Saya perlu tahu apakah ada alat atau utilitas yang tersedia yang dapat mengurangi upaya kami.
  • Apa cara terbaik untuk menyisipkan catatan massal dari sumber yang berbeda (kebanyakan dari lembar kerja Excel)?
Kodvavi
sumber
Aplikasi yang akan kita buat adalah aplikasi berbasis web di mana pengguna memiliki kontrol terbatas atas SQL server. Pengguna akan mengunggah file melalui browser dan sisa operasi akan dilakukan di sisi server.
kodvavi

Jawaban:

9

SSIS adalah cara untuk melanjutkan ini. Jika Anda belum pernah membuat paket sebelumnya, dan Anda tahu file sumber Anda (baca juga: spreadsheet) selalu akan menjadi yang sama, yang dapat Anda lakukan adalah menggunakan wizard Impor / Ekspor SQL Server. Di SSMS klik kanan database dan pilih Tugas> Impor (atau Ekspor) Data ...

Ini membuka wizard yang menuntun Anda melalui langkah-langkah memilih file sumber / tujuan Anda serta tabel tujuan (dapat membuat tabel jika belum ada). Anda harus memetakan kolom mana yang digunakan tetapi panduannya cukup lurus ke depan. Setelah selesai, ia akan meminta Anda menjalankan atau menyimpan paket (atau melakukan keduanya). Simpan paket. Ini akan menyimpan paket Anda dalam format .dtsx jika Anda memilih untuk menyimpannya ke sistem file. Pilihan Anda yang lain adalah menyimpan paket di SQL Server itu sendiri, yang kemudian akan menyimpannya dalam database sistem msdb.

Setelah Anda menyimpan paket Anda, Anda bisa membuat pekerjaan SQL Agent untuk menjalankan paket itu secara berkala (Anda menentukan jadwal) sehingga Anda selalu dapat memuat tabel Anda menggunakan SSIS. Jika Anda ingin mempelajari lebih lanjut tentang SSIS, lihat webinar gratis perusahaan saya (kami membahas seluruh tumpukan BI) di PragmaticWorks

SQLCtebal
sumber
Sebenarnya kami sedang membuat aplikasi berbasis web sehingga kami tidak akan mengizinkan pengguna untuk mengakses antarmuka basis data secara langsung. Aplikasi kita pertama-tama mengimpor file dan kemudian kita melakukan sisa operasi melalui aplikasi kita.
kodvavi
1
@kodvavi; Anda dapat menjalankan paket SSIS melalui kode .net ...
gbn
1
@kodvavi, saya tidak yakin apa yang Anda maksud dengan pernyataan itu. Aplikasi web biasanya tidak memiliki tugas untuk memulai memuat data, jadi mengapa itu penting? Bagian ETL dari database dan antarmuka aplikasi web adalah dua hal yang berbeda.
SQLChicken
Saya tahu bahwa banyak orang yang memprakarsai paket SSIS dari web, tetapi bagi saya itu tampaknya ide yang buruk, mengingat betapa banyak yang bisa salah dengan sumber excel.
Nick.McDermaid
5

Berikut adalah salah satu contoh tentang cara mengimpor data dari excel ke SQL Server. Salah satu masalah utama adalah memastikan Anda menggunakan komponen Konversi Data antara Excel dan SQL Server dan melakukan konversi dari NVARCHAR ke VARCHAR karena excel memperlakukan data sebagai NVARCHAR.

http://www.mssqltips.com/tip.asp?tip=1393

Sankar Reddy
sumber
nvarchar baik-baik saja dengan kami karena basis data kami akan mendukung atribut multibahasa. Saya meninjau topis. thanx
kodvavi
0

Saya tidak akan membuang apa pun dari mr. gbn,Sankar Reddy,SQLChicken. Tetapi saya ingin mengatakan bahwa ada cara sederhana untuk mengimpor lembar excel di SQL adalah melalui 'OPENROWSET' TSQL.

Sebagai contoh untuk mengimpor userlembar excel di TestDBDatabase. Misalkan saya sudah membuat [user]tabel di TestDBDatabase. Kemudian openrowset TSQL sederhana akan disebutkan di bawah seperti itu

Use TestDB;
    Go
    select * INTO [User]
    from openrowset('MICROSOFT.ACE.OLEDB.12.0',
    'Excel 12.0; Database=C:\TestFolder\User.xlsx; HDR=yes; IMEX=1',
    'select * from [User$]');
    Go

Catatan: Saya menulis TSQL ini di lingkungan SQL Server 2012. Untuk Setiap OLEDBpenyedia openrowset server SQL akan berbeda. Silakan periksa OLEDBtautan server -> penyedia yang didukung untuk versi SQL server itu. Dalam kasus saya itu ACE.OLEDB.12.0. Sebelum impor, pastikan Allow inprocesssudah dicentang atau tidak dari MICROSOFT.ACE.OLEDB.12.0penyedia itu. Itu harus diperiksa seperti itu masukkan deskripsi gambar di sini

Catatan: - Diuji dalam lingkungan produksi. Tetapi dalam kasus Anda tanpa menguji di lingkungan pengujian. Jangan langsung dijalankan di Lingkungan Produksi.

Md Haidar Ali Khan
sumber