Saya mencari bantuan untuk mengimpor .csv
file ke dalam SQL Server menggunakan BULK INSERT
dan saya punya beberapa pertanyaan dasar.
Masalah:
Data file CSV mungkin memiliki
,
(koma) di antaranya (Contoh: deskripsi), jadi bagaimana saya dapat membuat impor menangani data ini?Jika klien membuat CSV dari Excel maka data yang memiliki koma terlampir di dalam
""
(tanda kutip ganda) [seperti contoh di bawah ini] jadi bagaimana cara impor dapat menangani ini?Bagaimana cara melacak jika beberapa baris memiliki data buruk, yang impornya dilewati? (apakah impor melompati baris yang tidak dapat diimpor)
Berikut adalah contoh CSV dengan tajuk:
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.
Dan pernyataan SQL untuk mengimpor:
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
)
sql
sql-server
csv
bulkinsert
bulk
Prabhat
sumber
sumber
BULK NSERT
atau tidak memiliki izin untuk itu).Jawaban:
Impor SQL Server CSV Berbasis
Larutan
Jika Anda menggunakan
,
(koma) sebagai pembatas, maka tidak ada cara untuk membedakan antara koma sebagai terminator bidang dan koma dalam data Anda. Saya akan menggunakan yang berbedaFIELDTERMINATOR
seperti||
. Kode akan terlihat dan ini akan menangani koma dan slash tunggal dengan sempurna.Larutan
Jika Anda menggunakan BULK masukkan maka tidak ada cara untuk menangani tanda kutip ganda, data akan dimasukkan dengan tanda kutip ganda ke dalam baris. setelah memasukkan data ke dalam tabel Anda bisa mengganti tanda kutip ganda itu dengan '
'.
Larutan
Untuk menangani baris yang tidak dimuat ke dalam tabel karena data atau format tidak valid, dapat ditangani menggunakan properti ERRORFILE , tentukan nama file kesalahan, itu akan menulis baris memiliki kesalahan untuk file kesalahan. kode akan terlihat seperti.
sumber
Pertama-tama Anda perlu membuat tabel di basis data di mana Anda akan mengimpor file CSV. Setelah tabel dibuat, ikuti langkah-langkah di bawah ini.
• Masuk ke database Anda menggunakan SQL Server Management Studio
• Klik kanan pada database Anda dan pilih
Tasks -> Import Data...
• Klik
Next >
tombol• Untuk Sumber Data, pilih
Flat File Source
. Kemudian gunakan tombol Browse untuk memilih file CSV. Luangkan waktu untuk mengonfigurasikan bagaimana Anda ingin data diimpor sebelum mengklikNext >
tombol.• Untuk Tujuan, pilih penyedia database yang benar (misalnya untuk SQL Server 2012, Anda dapat menggunakan SQL Server Native Client 11.0). Masukkan nama Server. Periksa
Use SQL Server Authentication
tombol radio. Masukkan nama pengguna, kata sandi, dan basis data sebelum mengklikNext >
tombol.• Pada jendela Select Source Tables and Views, Anda dapat Mengedit Pemetaan sebelum mengklik
Next >
tombol.• Centang
Run immediately
kotak dan klikNext >
tombol.• Klik
Finish
tombol untuk menjalankan paket.Di atas ditemukan di situs web ini (saya telah menggunakannya dan diuji):
sumber
Anda harus menggunakan opsi FORMAT = 'CSV', FIELDQUOTE = '"':
sumber
Cara terbaik, tercepat dan termudah untuk menyelesaikan koma dalam masalah data adalah dengan menggunakan Excel untuk menyimpan file yang dipisahkan koma setelah menetapkan pengaturan pemisah daftar Windows ke sesuatu selain koma (seperti pipa). Ini kemudian akan menghasilkan pipa (atau apa pun) file terpisah untuk Anda yang kemudian dapat Anda impor. Ini dijelaskan di sini .
sumber
Pertama, Anda perlu mengimpor file CSV ke dalam Tabel Data
Kemudian Anda bisa memasukkan baris massal menggunakan SQLBulkCopy
sumber
Inilah cara saya akan menyelesaikannya:
Cukup Simpan File CSV Anda sebagai Lembar XLS di excel (Dengan Melakukan itu, Anda tidak perlu khawatir tentang pembatas. Format spreadsheet Excel akan dibaca sebagai tabel dan diimpor langsung ke Tabel SQL)
Impor File Menggunakan SSIS
Tulis Skrip Kustom di manajer impor untuk menghilangkan / memodifikasi data yang Anda cari. (Atau jalankan skrip master untuk memeriksa data yang ingin Anda hapus)
Semoga berhasil.
sumber
Karena mereka tidak menggunakan panduan impor SQL, langkah-langkahnya adalah sebagai berikut:
Klik kanan pada database di opsi tugas untuk mengimpor data,
Setelah wizard terbuka, kami memilih jenis data yang akan tersirat. Dalam hal ini akan menjadi
Kami memilih file CSV, Anda dapat mengonfigurasi tipe data tabel di CSV, tetapi yang terbaik adalah membawanya dari CSV.
Tergantung pada jenis otentikasi kami, kami memilihnya, setelah ini selesai, opsi yang sangat penting datang.
(biasanya tidak dimulai dari 1), sebagai gantinya jika kami memiliki kolom dengan id di CSV kami memilih insert memungkinkan id, langkah selanjutnya adalah mengakhiri wizard, kami dapat meninjau perubahan di sini.
Di sisi lain, di jendela berikut mungkin muncul peringatan, atau peringatan yang ideal adalah mengabaikan hal ini, hanya jika mereka meninggalkan kesalahan diperlukan untuk memperhatikan.
Tautan ini memiliki gambar .
sumber
Impor file ke Excel dengan terlebih dahulu membuka excel, lalu pergi ke DATA, impor dari File TXT, pilih ekstensi csv yang akan mempertahankan 0 nilai awalan, dan simpan kolom itu sebagai TEXT karena excel akan menjatuhkan 0 yang memimpin sebelumnya (JANGAN klik dua kali klik untuk membuka dengan Excel jika Anda memiliki data numerik dalam bidang yang dimulai dengan 0 [nol]). Kemudian simpan saja sebagai file Teks Yang Dibatasi Tab. Ketika Anda mengimpor ke excel, Anda mendapatkan opsi untuk menyimpan sebagai UMUM, TEKS, dll. Pilih TEXT sehingga kutipan di tengah-tengah string dalam bidang seperti YourCompany, LLC juga disimpan ...
Saya berharap saya bisa menggunakan fungsionalitas FORMAT dan Fieldquote tapi itu tampaknya tidak didukung dalam versi SSMS saya
sumber
Saya tahu bahwa ada jawaban yang diterima tetapi masih, saya ingin membagikan skenario saya yang mungkin membantu seseorang untuk memecahkan ALAT masalah mereka
SKENARIO saya sedang memuat dataset yang dalam format CSV yang kemudian ditampilkan pada tampilan saya mencoba menggunakan beban massal tetapi saya tidak dapat memuat seperti
BULK LOAD
menggunakandan sel Excel juga menggunakan
,
, saya juga tidak bisa menggunakanFlat file source
secara langsung karena saya menggunakanCode-First Approach
dan melakukan itu hanya membuat model dalam SSMS DB, bukan dalam model dari mana saya harus menggunakan properti nanti.LARUTAN
Add-Migration
di konsol paket NuGetsumber
Saya tahu ini bukan solusi tepat untuk pertanyaan di atas, tetapi bagi saya, itu adalah mimpi buruk ketika saya mencoba untuk Menyalin data dari satu database yang terletak di server terpisah ke lokal saya.
Saya mencoba melakukan itu dengan pertama-tama mengekspor data dari Server ke
CSV/txt
dan kemudian mengimpornya ke tabel lokal saya.Kedua solusi: dengan menuliskan kueri untuk mengimpor
CSV
atau menggunakan wizard Impor Data SSMS selalu menghasilkan kesalahan (kesalahan sangat umum, mengatakan bahwa ada masalah parsing). Dan meskipun saya tidak melakukan sesuatu yang istimewa, hanya ekspor keCSV
dan kemudian mencoba untuk mengimporCSV
ke lokalDB
, kesalahan selalu ada.Saya mencoba melihat bagian pemetaan dan pratinjau data, tetapi selalu ada kekacauan besar. Dan saya tahu masalah utama berasal dari salah satu
table
kolom, yang berisiJSON
danSQL
parser memperlakukannya dengan salah.Jadi akhirnya, saya menemukan solusi yang berbeda dan ingin membaginya jika ada orang lain yang memiliki masalah serupa.
Apa yang saya lakukan adalah saya telah menggunakan Wisaya Ekspor pada Server eksternal.
Berikut adalah langkah-langkah untuk mengulangi proses yang sama:
1) Klik kanan pada database dan pilih
Tasks -> Export Data...
2) Ketika Wizard akan terbuka, pilih Next dan di tempat "Sumber Data:" pilih "SQL Server Native Client".
3) Setelah menekan Next , Anda harus memilih Destionation .
Untuk itu, pilih lagi "SQL Server Native Client".
Kali ini Anda dapat menyediakan lokal Anda (atau eksternal lainnya
DB
)DB
.4) Setelah menekan tombol Next, Anda memiliki dua opsi untuk menyalin seluruh tabel dari satu
DB
ke yang lain atau menuliskan kueri untuk menentukan data yang tepat untuk disalin. Dalam kasus saya, saya tidak perlu seluruh tabel (terlalu besar), tetapi hanya sebagian saja, jadi saya telah memilih "Tulis kueri untuk menentukan data yang akan ditransfer".5) Dan akhirnya, Anda perlu menentukan tabel tujuan tempat data akan dipilih.
Dan sekarang langsung ke akhir Wizard dengan menekan tombol Next / Finish .
sumber
Mungkin SSMS: Cara mengimpor (Salin / Tempel) data dari excel dapat membantu (Jika Anda tidak ingin menggunakan
BULK INSERT
atau tidak memiliki izin untuk itu).sumber