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

SQL Server BCP mengekspor file yang rusak?

Terima kasih Tuhan, terima kasih atas jawaban @ user_0 dan jawaban dan komentar samar @ user3494351 dan posting forum kuno ini, saya akhirnya menemukan ini setelah beberapa jam membenturkan kepala ke dinding.

Masalahnya adalah BCP suka menambahkan 8 byte tambahan ke file secara default. Ini merusak file dan membuatnya tidak dapat dibuka jika Anda hanya menggunakan flag -n asli.

Namun, BCP memungkinkan Anda untuk menentukan file format sebagai output yang memungkinkan Anda untuk tidak menambahkan 8 byte tambahan. Jadi saya punya tabel yang saya buat (untuk digunakan dalam kursor) di SQL Server yang hanya memiliki SATU ROW dan SATU KOLOM dengan data biner saya. Tabel harus ada saat Anda menjalankan perintah pertama.

Di baris perintah pertama-tama Anda harus melakukan ini:

bcp MyDatabase.MySchema.MyTempTable format nul -T -n -f formatfile.fmt

Ini membuat formatfile.fmt di direktori tempat Anda berada. Saya melakukannya di drive E:\. Berikut tampilannya:

10.0
1
1       SQLBINARY           8       0       ""   1     MyColumn             ""

Itu 8 di sana adalah variabel yang bcp mengatakan berapa banyak byte untuk ditambahkan ke file Anda. Ini adalah bajingan yang merusak file Anda. Ubah pengisap itu menjadi 0:

10.0
1
1       SQLBINARY           0       0       ""   1     MyColumn             ""

Sekarang jalankan saja skrip BCP Anda, lepaskan flag -n dan sertakan flag -f:

bcp "SELECT MyColumn FROM MyDatabase.MySchema.MyTempTable" queryout "E:\MyOutputpath" -T -f E:\formatfile.fmt


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tutorial SQL (DDL, DML) pada contoh dialek MS SQL Server

  2. Cara mendapatkan Catatan Berbeda dari tabel di SQL Server - Tutorial SQL Server / TSQL 112

  3. Contoh Mengonversi 'tanggal' menjadi 'waktu-waktu' di SQL Server (T-SQL)

  4. Kesalahan dalam SQL Server saat mengimpor file CSV meskipun varchar(MAX) digunakan untuk setiap kolom

  5. Apa itu Pemblokiran SQL Server?