বিসিপি কমান্ড ' ' এর নিকটে ভুল সিনট্যাক্স। চরিত্রটি আসলে: "ä"


11

আমি উবুন্টু (লিনাক্স) এ এমএসকিএল-সার্ভার এবং এমএসকিএল-সরঞ্জাম ইনস্টল করেছি। যখন আমি নিম্নলিখিত কমান্ড-লাইনটি ব্যবহার করে বিসিপি কমান্ড দিয়ে ডেটা রফতানি করার চেষ্টা করি :

bcp DBname.dbo.Täble_Name out Täble_Name -c -k  -S127.0.0.1 -Usa -PpassWord -r ~

আমি এই ত্রুটি পেয়েছি:

এসকিউএলস্টেট = 37000, নেটিভেরর = 102
ত্রুটি = [মাইক্রোসফ্ট] [এসকিউএল সার্ভারের জন্য ওডিবিসি ড্রাইভার 13] [এসকিউএল সার্ভার] ' ' এর নিকটে ভুল সিনট্যাক্স।

হয় ä

আমি যদি Täble_Nameবর্গাকার বন্ধনী দিয়ে ঘিরে থাকি :

 bcp DBname.dbo.[Täble_Name] out Täble_Name -c -k  -S127.0.0.1 -Usa -PpassWord -r ~

আমি এই ত্রুটিটি বস্তুর নামে পেয়েছি:

এসকিউএলস্টেট = এস 10002, নেটিভেরর = 208
ত্রুটি = [মাইক্রোসফ্ট] [এসকিউএল সার্ভারের জন্য ওডিবিসি ড্রাইভার 13] [এসকিউএল সার্ভার] অবৈধ অবজেক্টের নাম 'ডিবিনেম.ডবো.ট্যাবল_নাম'।

আমি আরও এগিয়ে গিয়ে বিকল্পটির ''সাথে একক উদ্ধৃতি যুক্ত করেছি -q(যা উদ্ধৃত শনাক্তকারীদের সক্ষম করে):

bcp 'DBname.dbo.[Täble_Name]' out Täble_Name -c -k  -S127.0.0.1 -Usa -PpassWord -r ~ -q

ত্রুটিটি হয়ে যায়:

এসকিউএলস্টেট = এস 10002, নেটিভেরর = 208
ত্রুটি = [মাইক্রোসফ্ট] [এসকিউএল সার্ভারের জন্য ওডিবিসি ড্রাইভার 13] [এসকিউএল সার্ভার] অবৈধ অবজেক্টের নাম 'ডিবিনেম.ডবো.ট্যাবল_নাম'।

এনবি: কমান্ডটি এই বিশেষ অক্ষর ছাড়াই টেবিলের নামগুলির সাথে নিখুঁতভাবে কাজ করে ä

উত্তর:


7

আমি বিশ্বাস করি এটি শেল এবং বিসিপি / এসকিউএল সার্ভারের মধ্যে একটি এনকোডিং সমস্যা । এসকিউএল সার্ভার ইউটিএফ -16 লিটল এন্ডিয়ান আশা করে, তবে লিনাক্স এটি ব্যবহার করছে না। আমার লিনাক্স VM- র জন্য ডিফল্ট মাধ্যমে হল UTF-8 en_GB.UTF-8

<টি এল; ডিআর> ব্যবহার "queryout" BCP কমান্ড উল্লেখ "SELECT * FROM ..."পরিবর্তে "আউট" কমান্ড ব্যবহার করে এবং কেবল একটি সারণী নাম সরবরাহ।

এরপরে আমার পরীক্ষাটি হ'ল ...


আমি ব্যবহার করে উপলব্ধ লোকেল / এনকোডিংগুলির তালিকা পেয়েছি:

$ locale -a

ফিরে

C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX

আমি সেট করে এই বিকল্পগুলির বেশ কয়েকটি চেষ্টা করেছি:

$ export LC_CTYPE=C.UTF-8

এবং তারপরে আবার চেষ্টা করে:

$ export LC_ALL=C.UTF-8

কিছুই মনে হয় না পার্থক্য আছে। এবং প্রতিবার আমি স্কোয়ার বন্ধনীগুলির বিভিন্ন সংমিশ্রণগুলি ছাড়াই -qএবং তারপরে চেষ্টা করেছি -qএবং তারপরে এবং বাইরে কোনও বর্গাকার বন্ধনী নেই -q

এমনকি আমি বাইটগুলি ইনজেকশনের চেষ্টা করেছি যা ইউটিএফ -16 এলই চরিত্রের äমাধ্যমে $'\xe4\x00'এবং এমনকি এর সমতুল্য হবে $'\xe4'$'\x00'তবে কোনও উন্নতি হয়নি।

যাহোক,

কি করেনি কাজ পরিবর্তন হয়েছিল BCP থেকে কমান্ড outপরিবর্তে হতে queryout, এবং তারপর পরিবর্তন সারণী নাম একটি অংশ হতে SELECTবিবৃতি (আমি মুছে -r ~সুইচ শুধুমাত্র এখানে নেই স্ক্রল অনুভূমিকভাবে কমান্ড লাইন করতে, কিন্তু এটা আমার পরীক্ষার মধ্যে ছিল না)। আমি টেবিলটি তৈরি করেছি [tempdb]এবং নিম্নলিখিতগুলি চালিত করেছি:

bcp "SELECT * FROM tempdb.dbo.[Täble_Name]" queryout tab -c -k -S127.0.0.1 -Usa -Ppass

সমস্যা নেই। তবে আকর্ষণীয়ভাবে যথেষ্ট, আমি উচ্চারণকৃতকে äএকটি অ-উচ্চারণে পরিবর্তন করেছি a:

bcp "SELECT * FROM tempdb.dbo.[Table_Name]" queryout tab -c -k  -S127.0.0.1 -Usa -Ppass

এবং নিম্নলিখিত ত্রুটি পেয়েছি:

এসকিউএলস্টেট = এস 1000, নেটিভেরর = 0
ত্রুটি = [মাইক্রোসফ্ট] [এসকিউএল সার্ভারের জন্য ওডিবিসি ড্রাইভার 13] কলাম স্তর স্তরের কোলিশন সমাধান করতে অক্ষম

এটি বিসিপি থেকে একটি ত্রুটি tempdbএবং আমার পরীক্ষার টেবিলে কেবলমাত্র কলামটি INTডেটাটাইপ ব্যবহার করার কারণে অবশ্যই তার মেটা-ডেটা উল্লেখ করা উচিত ।

এখন, আমার উদাহরণ স্তরের কোলেশনটি অ্যাকসেন্ট-সংবেদনশীল, তাই আমি অ-উচ্চারণের aকাজটি করার আশা করছিলাম না (যদিও আমি "অবৈধ অবজেক্ট" ত্রুটিটি আশা করেছিলাম)। সুতরাং, অ্যাকসেন্ট-সংবেদনশীলতা পরীক্ষা করার জন্য, আমি একটি কলেজের সাথে একটি নতুন ডাটাবেস Latin1_General_100_CI_AI_KS_WS_CSতৈরি করেছি, নতুন ডিবিতে একই টেবিলটি তৈরি করেছি এবং কয়েকটি সারি যুক্ত করেছি। আমি তখন নিম্নলিখিত দুটি পরীক্ষা চালিয়েছি:

bcp "SELECT * FROM ImportTest.dbo.[Täble_Name]" queryout tab -c -k  -S127.0.0.1 -Usa -Ppass

bcp "SELECT * FROM ImportTest.dbo.[Table_Name]" queryout tab -c -k  -S127.0.0.1 -Usa -Ppass

এবং দুজনেই কাজ করেছেন!

প্রাথমিক ফিরে যাওয়া BCP মাত্র একটি ক্যোয়ারী পরিবর্তে সারণী নাম উল্লেখ নির্দেশে, আমি পেতে সক্ষম ছিল ImportTest.dbo.[Table_Name]এবং ImportTest.dbo.Table_Nameকাজ। তবে, আমি এখনও ImportTest.dbo.[Täble_Name]কাজের কোনও সংমিশ্রণ পেতে সক্ষম হইনি ; সমস্ত রূপগুলি আগের মতো একই ত্রুটি পেয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.