Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana saya bisa membuat skrip INSERT untuk tabel dengan bidang VARBINARY(MAX)?

Jika ini hanya dilakukan satu kali (atau jarang), Anda dapat mencoba membuat skrip data dari Wizard SSMS seperti yang dijelaskan di sini:

http:/ /sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx

Atau, jika Anda perlu sering melakukan ini dan ingin mengotomatiskannya, Anda dapat mencoba SQL# Pustaka SQLCLR (yang saya tulis dan meskipun sebagian besar gratis, fungsi yang Anda butuhkan di sini tidak). Fungsi untuk melakukan ini adalah DB_DumpData dan juga menghasilkan INSERT pernyataan.

Tetapi sekali lagi, jika ini adalah tugas satu kali atau jarang, cobalah wizard ekspor data yang ada di dalam Management Studio. Itu akan memungkinkan Anda untuk membuat skrip SQL yang dapat Anda jalankan di Produksi. Saya baru saja menguji ini di atas meja dengan VARBINARY(MAX) bidang yang berisi 3.365.964 byte data dan wizard Generate Scripts menghasilkan INSERT pernyataan dengan seluruh string heksadesimal 6,73 juta karakter untuk satu nilai tersebut.

PERBARUI:
Cara cepat dan mudah lainnya untuk melakukan ini dengan cara yang memungkinkan Anda menyalin / menempelkan seluruh pernyataan INSERT ke dalam skrip SQL dan tidak perlu repot dengan BCP atau SSMS Export Wizard adalah dengan hanya mengubah nilainya menjadi XML . Pertama, Anda akan CONVERT VARBINARY ke VARCHAR(MAX) menggunakan gaya opsional "1" yang memberi Anda string hex yang dimulai dengan "0x". Setelah Anda memiliki string hex dari data biner, Anda dapat menggabungkannya menjadi INSERT pernyataan dan semuanya itu, ketika dikonversi ke XML , dapat berisi seluruh VARBINARY bidang. Lihat contoh berikut:

DECLARE @Binary VARBINARY(MAX) = CONVERT(VARBINARY(MAX),
                                         REPLICATE(
                                           CONVERT(NVARCHAR(MAX), 'test string'),
                                           100000)
                                        )

SELECT 'INSERT INTO dbo.TableName (ColumnName) VALUES ('+
       CONVERT(VARCHAR(MAX), @Binary, 1) + ')' AS [Insert]
FOR XML RAW;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kapan saya perlu menggunakan Blok Mulai / Akhir dan kata kunci Go di SQL Server?

  2. SQL Server (TSQL) - Apakah mungkin untuk membuat pernyataan EXEC secara paralel?

  3. HAS_DBACCESS() – Temukan apakah Pengguna Dapat Mengakses Database di SQL Server

  4. Kesulitan dalam menulis Stored Proc untuk mengambil data untuk Jqgrid Pagination

  5. Cara Mengubah Tipe Data Kolom di SQL Server (T-SQL)