Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर BCP निर्यात दूषित फ़ाइल?

भगवान का शुक्र है, @ user_0 उत्तर और @ user3494351 के गूढ़ उत्तर और टिप्पणी और इस प्राचीन मंच पोस्ट के लिए धन्यवाद, मैंने अंततः दीवार के खिलाफ अपना सिर पीटने के कई घंटों के बाद इसका पता लगाया।

मुद्दा यह है कि बीसीपी डिफ़ॉल्ट रूप से फ़ाइल में अतिरिक्त 8 बाइट जोड़ना पसंद करता है। यह फ़ाइल को दूषित कर देता है और यदि आप केवल मूल -n ध्वज का उपयोग करते हैं तो इसे खोलने में असमर्थ बना देता है।

हालांकि, बीसीपी आपको आउटपुट के रूप में एक प्रारूप फ़ाइल निर्दिष्ट करने की अनुमति देता है जो आपको यह बताने की अनुमति दे सकता है कि अतिरिक्त 8 बाइट्स न जोड़ें। तो मेरे पास SQL ​​​​सर्वर में एक टेबल है जिसे मैंने बनाया है (कर्सर में इस्तेमाल किया जाना है) जिसमें मेरे बाइनरी डेटा के साथ केवल एक पंक्ति और एक कॉलम है। जब आप पहली कमांड चलाते हैं तो तालिका मौजूद होनी चाहिए।

कमांड लाइन में सबसे पहले आपको यह करना होगा:

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

यह उस निर्देशिका में formatfile.fmt बनाता है जिसमें आप हैं। मैंने E:\ ड्राइव पर किया था। यह इस तरह दिखता है:

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

वह 8 वहीं वेरिएबल है जो बीसीपी कहता है कि आपकी फाइल में कितने बाइट जोड़ने हैं। यह कमीने है जो आपकी फाइलों को भ्रष्ट कर रहा है। उस चूसने वाले को 0 में बदलें:

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

अब बस अपनी BCP स्क्रिप्ट चलाएँ, -n फ़्लैग छोड़ें और -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. SQL सर्वर में सिमेंटिक सर्च का उपयोग कैसे करें

  2. 2015 में SQL सर्वर डेटा प्लेटफ़ॉर्म अपग्रेड

  3. एसक्यूएल में डेटटाइम प्रारूप से समय कैसे प्राप्त करें?

  4. SQL सर्वर में त्रुटि और लेनदेन को लागू करना

  5. SQL सर्वर 2016 - स्ट्रेच डेटाबेस का परिचय