এসকিউএল সার্ভার ২০০৮ সালে .csv ফাইলে ক্যোয়ারির ফলাফল রফতানি করুন


141

আমি কীভাবে এসকিউএল সার্ভার ২০০৮ সালে একটি সিএসভি ফাইলে কোনও ক্যোয়ারী ফলাফল রফতানি করতে পারি?



আপনার কি আপনার ডিলিমিটার পালাতে হবে? এখন পর্যন্ত বেশিরভাগ উত্তর ধরে নিয়েছে যে আপনি তা করেন নি, যা আসলে সমস্ত সিএসভি নয়।
নিক

@ নিক - সাধারণত ডিলিমিটারগুলিতে কেবল একটি স্ট্রিং থাকে এবং তাদের চারপাশে সাধারণত উদ্ধৃতি থাকে। এর সমাধান দেখতে আমার উত্তর দেখুন। stackoverflow.com/questions/6115054/…
ম্যাকগাইভার


আমি মাঝে মাঝে পাইথন
LV98

উত্তর:


168
  1. এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও খুলুন
  2. সরঞ্জামসমূহ> বিকল্পসমূহ> ক্যোয়ারির ফলাফলসমূহ> এসকিউএল সার্ভার> ফলাফলের পাঠ্যে যান
  3. খুব ডানদিকে, একটি ড্রপ ডাউন বক্স রয়েছে যার নাম আউটপুট ফর্ম্যাট
  4. কমা সীমানা চয়ন করুন এবং ঠিক আছে ক্লিক করুন

নীচে, এখানে চিত্রটির একটি পূর্ণ স্ক্রিন সংস্করণ's

এখানে চিত্র বর্ণনা লিখুন

এটি আপনার ক্যোয়ারী ফলাফলগুলি কমা-বিস্মৃত পাঠ্য হিসাবে দেখাবে।

একটি ক্যোয়ারির ফলাফলগুলি একটি ফাইলে সংরক্ষণ করতে: Ctrl + Shift + F


10
উত্তরটি কিছুটা বিভ্রান্তিকর ... আপনি চাপলে Ctrl+Shift+F, এটি কেবলমাত্র আউটপুট মোড পরিবর্তন করে, যদি আপনি ইতিমধ্যে ক্যোয়ারী চালিয়ে যান তবে ফলাফলগুলিকে প্রভাবিত করে না। এটি প্রতিবিম্বিত হওয়ার জন্য আপনাকে কোয়েরিটি আবার চালাতে হবে। আপনি যখন এটি "ফলাফলের জন্য ফাইল" মোডে চালান, এটি আপনাকে ফলাফলগুলি কোথায় সংরক্ষণ করতে চান তা জিজ্ঞাসা করা উচিত।
qJake

3
সরঞ্জামগুলিতে যেতে হবে> বিকল্পগুলি> প্রশ্নের ফলাফল> এসকিউএল সার্ভার > পাঠ্যে ফলাফল
কংগ্রেসবঙ্গাস

45
ক্যোয়ারী পুনরায় চালানো আমার পক্ষে যথেষ্ট ছিল না। আমাকে কোয়েরি উইন্ডোটি বন্ধ করতে হবে, একটি নতুন খুলতে হবে এবং তারপরে আবার কোয়েরি চালাতে হবে।
ব্রেয়ানডেন

3
নিশ্চিত করা হয়েছে @ ব্র্যান্ডান মন্তব্য। নতুন সেটিংস বর্তমানে খোলার ক্যোয়ারী উইন্ডোতে প্রযোজ্য হবে না, এগুলি অবশ্যই বন্ধ করতে হবে এবং কোয়েরিটি পুনরায় চালাতে হবে।
শিনিগামে

3
আমার একটি কাজ করতে হয়েছিল তা ছিল এটি ডিফল্ট আরপিটি এক্সটেনশন হিসাবে রফতানি করা। এটি করার পরে আপনি কেবল একটি সিএসভিতে নাম পরিবর্তন করতে পারেন এবং এটি কার্যকর হয়।
থমাস বেনেট

140

আমি জানি এটি কিছুটা পুরানো, তবে এখানে একটি আরও সহজ উপায় ...

  1. ডিফল্ট সেটিংস দিয়ে আপনার ক্যোয়ারি চালান (গ্রিড ফর্ম্যাটে ফলাফল রাখে, যদি আপনার গ্রিড ফর্ম্যাটে না থাকে তবে নীচে দেখুন)

  2. গ্রিডের ফলাফলগুলিতে ডান ক্লিক করুন এবং "ফলাফল হিসাবে সংরক্ষণ করুন" এ ক্লিক করুন এবং এটি সংরক্ষণ করুন।

যদি আপনার ফলাফলগুলি গ্রিড ফর্ম্যাটে না থাকে, আপনি যেখানে ক্যোয়ারীটি লেখেন সেখানে ডান ক্লিক করুন, "ফলাফলগুলিতে" হোভার করুন এবং "ফলাফলগুলিতে গ্রিডে" ক্লিক করুন

আপনি কলাম শিরোনাম ক্যাপচার না সচেতন হন!

শুভকামনা!


1
কেবল সমস্যাটি হ'ল এই পদ্ধতিটি আপনাকে কোনও বিকল্প সেট করতে দেয় না বলে মনে হচ্ছে। উদাহরণস্বরূপ, সমস্ত NUL গুলি আউটপুট ফাইলগুলিতে "NULL" ইত্যাদি দেখায়। সম্ভবত এটির একটি উপায় আছে যা সম্পর্কে আমি জানিনা।
নূহ

13
আশ্চর্যজনকভাবে এমনকি এসএসএমএস ২০১২-তেও এটি সিএসভি-র জন্য পাঠ্যের সঠিক উদ্ধৃতি দেয় না। একটি CHAR / VARCHAR এর মধ্যে কমা বা নতুন লাইনটি উদ্ধৃত করা উচিত, তবে তা নয়। এর ফলে ডেটা নতুন কলামে বা একটি নতুন লাইনে স্থানান্তরিত হয়।
এরিক জে।

4
আপনাকে কলাম শিরোনাম দেয় না।
ডন

8
@ আপনি "ক্যোয়ারী" -> "ক্যোয়ারী বিকল্পগুলি ...", গ্রিড ট্যাবে যান এবং ফলাফলগুলি অনুলিপি বা সংরক্ষণ করার সময় কলামের শিরোনাম অন্তর্ভুক্ত করুন "
রব ওয়াইজ

7
এই উত্তর হওয়া উচিত।
pspahn

46

আপনি পাওয়ারশেল ব্যবহার করতে পারেন

$AttachmentPath = "CV File location"
$QueryFmt= "Query"

Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $QueryFmt | Export-CSV $AttachmentPath

ধন্যবাদ! এটিই ছিল আমার পক্ষে একমাত্র পরামর্শ। হ্যান্ডেলগুলি সঠিকভাবে পালানোর জন্য
এমের্তেচি

3
+10 যদি আমি পারতাম। কেবল উত্তর দিন যে পালানো পরিচালনা করে। এটি চালানোর জন্য, আমাকে স্ক্রিপ্টের শীর্ষে দুটি লাইন যুক্ত করতে হয়েছিল: Add-PSSnapin SqlServerCmdletSnapin100এবং Add-PSSnapin SqlServerProviderSnapin100
এরিক জে।

যদি আপনি টাইমআউটটির মুখোমুখি হন যেমন ক্যোয়ারটাইমআউট যোগ করুন যেমনInvoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
টিলো

1
পাওয়ারশেল নবাগত হিসাবে আমার Install-Module -Name SqlServerস্কেল সার্ভার মডিউলটি ইনস্টল করার দরকার ছিল: (তবে সেই সিএমডলেটগুলি স্ন্যাপ করার দরকার নেই)। এছাড়াও, আমি একটি স্ক্রিপ্টের মধ্যে কমান্ড, যা শেষ করা যাবে না যতক্ষণ না আমি ফাঁসি নীতি পরিবর্তন চাই সংরক্ষিত চাই: Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
স্যান্ডিসকট

@ সানডিসকট আমিও পাওয়ারশেল নবাগত, তাই আপনাকে ধন্যবাদ। যাইহোক আমি মনে করি যে RemoteSignedএক্ষেত্রে একটি কার্যকর করার নীতিই যথেষ্ট।
বিগবোথ

14

যদি প্রশ্নে থাকা ডাটাবেস স্থানীয় হয়, তবে কোনও সিএসভি ফাইলে ক্যোরির ফলাফল রফতানি করার জন্য নিম্নলিখিতটি সম্ভবত সবচেয়ে শক্তিশালী উপায় (এটি আপনাকে সবচেয়ে নিয়ন্ত্রণ প্রদান করছে)।

  1. প্রশ্নটি অনুলিপি করুন।
  2. অবজেক্ট এক্সপ্লোরারে প্রশ্নযুক্ত ডাটাবেসটিতে ডান ক্লিক করুন।
  3. "কার্য" নির্বাচন করুন >> "ডেটা রফতানি করুন ..."
  4. আপনার ডেটাসোর্স কনফিগার করুন এবং "পরবর্তী" ক্লিক করুন।
  5. গন্তব্য হিসাবে "ফ্ল্যাট ফাইল" বা "মাইক্রোসফ্ট এক্সেল" চয়ন করুন।
  6. একটি ফাইল পাথ নির্দিষ্ট করুন।
  7. যদি একটি ফ্ল্যাট ফাইলের সাথে কাজ করে তবে পছন্দসইভাবে কনফিগার করুন। মাইক্রোসফ্ট এক্সেলের সাথে যদি কাজ করা হয় তবে "এক্সেল 2007" নির্বাচন করুন (পূর্ববর্তী সংস্করণগুলির একটি সারি সীমা 64k আছে)
  8. "স্থানান্তর করতে ডেটা নির্দিষ্ট করতে একটি প্রশ্ন লিখুন" নির্বাচন করুন
  9. পদক্ষেপ 1 থেকে কোয়েরি আটকান।
  10. পরবর্তী ক্লিক করুন >> ম্যাপিংগুলি পর্যালোচনা করুন >> পরবর্তী ক্লিক করুন >> "সাথে সাথে চালান" নির্বাচন করুন >> দুবার "সমাপ্ত" ক্লিক করুন।

এই প্রক্রিয়াটি নিখরচায় যাওয়ার পরে, আমি নিম্নলিখিতটি সর্বোত্তম বিকল্প হিসাবে খুঁজে পেয়েছি

পাওয়ারশেল স্ক্রিপ্ট

$dbname = "**YOUR_DB_NAME_WITHOUT_STARS**"
$AttachmentPath = "c:\\export.csv"
$QueryFmt= @"
**YOUR_QUERY_WITHOUT_STARS**
"@

Invoke-Sqlcmd   -ServerInstance **SERVER_NAME_WITHOUT_STARS** -Database  $dbname -Query $QueryFmt | Export-CSV $AttachmentPath -NoTypeInformation

অ্যাডমিন হিসাবে পাওয়ারশেল চালান

& "c:\path_to_your_ps1_file.ps1"

1
যদি আপনি টাইমআউটটির মুখোমুখি হন যেমন ক্যোয়ারটাইমআউট যোগ করুন যেমনInvoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
টিলো

6

এমএস এক্সেল -> ডেটা -> নতুন প্রশ্ন -> ডাটাবেস থেকে .. পদক্ষেপগুলি অনুসরণ করুন


6

এনএস এর উত্তরের ভিত্তিতে, আমার একটি পাওয়ারশেল স্ক্রিপ্ট রয়েছে যা ক্ষেত্রের চারপাশে উদ্ধৃতি চিহ্ন এবং কমা বিচ্ছিন্ন করে একটি সিএসভি ফাইলে রফতানি করে এবং ফাইলটিতে শিরোনামের তথ্য এড়িয়ে যায়।

add-pssnapin sqlserverprovidersnapin100
add-pssnapin sqlservercmdletsnapin100

$qry = @"
Select
  *
From
 tablename
"@

Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $qry | convertto-CSV -notype | select -skip 1  > "full path and filename.csv"

প্রথম দুটি লাইন ইনভোক-এসকিএলসিএমডি কমান্ড- লেটটি ব্যবহার করার ক্ষমতা সক্ষম করে ।


6

টি-এসকিউএল ব্যবহার করুন :

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName

তবে, এখানে বেশ কয়েকটা সতর্কতা রয়েছে:

  1. আপনার Microsoft.ACE.OLEDB.12.0 সরবরাহকারী উপলব্ধ থাকতে হবে। জেট provider.০ সরবরাহকারীও কাজ করবে, তবে এটি প্রাচীন, সুতরাং আমি পরিবর্তে এটি ব্যবহার করেছি used

  2. .CSV ফাইলটি ইতিমধ্যে বিদ্যমান থাকতে হবে। যদি আপনি শিরোনাম ( HDR=YES) ব্যবহার করে থাকেন তবে নিশ্চিত করুন যে .CSV ফাইলের প্রথম লাইনটি সমস্ত ক্ষেত্রের একটি সীমিত তালিকা।


3

সিএসভিতে রফতানি করার জন্য নেটিভ এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও কৌশলটি ব্যবহার করা (যেমন @ 8 কেবি প্রস্তাবিত) আপনার মানগুলিতে কমা থাকলে তা কার্যকর হয় না, কারণ এসএসএমএস ডাবল কোটে মানগুলিকে মোড়া করে না। আমার পক্ষে আরও শক্তিশালী উপায়টি হ'ল ফলগুলি অনুলিপি করা (গ্রিডের ভিতরে ক্লিক করুন এবং তারপরে CTRL-A, CTRL-C) এবং এটি এক্সলে আটকানো Excel তারপরে এক্সেল থেকে সিএসভি ফাইল হিসাবে সংরক্ষণ করুন।


2

আপনি কোয়েরিটোডক ( http://www.querytodoc.com ) ব্যবহার করতে পারেন । এটি আপনাকে একটি এসকিউএল ডাটাবেসের বিরুদ্ধে একটি কোয়েরি লিখতে এবং এক্সেল, ওয়ার্ড, এইচটিএমএল বা সিএসভিতে ডিলিমেটারটি চয়ন করার পরে - ফলাফলগুলি রফতানি করতে দেয়


2
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName

যেহেতু @ স্লগমিস্টার এক্সট্রাওর্ডিনায়ার উদ্ধৃতটি সঠিক is

1 টি ফাইল কলাম 2 এর সাথে ইতিমধ্যে উপস্থিত থাকতে হবে> একটিতে অফিস ইনস্টল থাকা দরকার

ত্রুটির মুখোমুখি

1

এমএসজি 7303, স্তর 16, রাজ্য 1, লাইন 1 ওএলই ডিবি সরবরাহকারী "মাইক্রোসফ্ট.এসিই.ওএলডিবি .১.০" "লিঙ্কযুক্ত সার্ভারের জন্য" (নাল) "ডেটা উত্স অবজেক্টটি আরম্ভ করতে পারে না।"

Bit৪ বিট http://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AcecessDatabaseEngine_x64.exe

32 বিট http://download.microsoft.com/download/f/d/8/fd8c20d8-e38a-48b6-8691-542403b91da1/ অ্যাক্সেসডাটাবেসইঙ্গাইন.এক্সই

2

এমএসজি 15281, স্তর 16, রাজ্য 1, লাইন 1 এসকিউএল সার্ভার স্টেটম্যান্ট 'ওপেনরউসেট / ওপেনড্যাটাসোর্স' উপাদান 'অ্যাডহক ডিস্ট্রিবিউটড ক্যোয়ারী'-এর অ্যাক্সেসকে অবরুদ্ধ করেছে কারণ এই সার্ভারের সুরক্ষা কনফিগারেশনের অংশ হিসাবে এই উপাদানটি বন্ধ রয়েছে। কোনও সিস্টেম অ্যাডমিনিস্ট্রেটর sp_configure ব্যবহার করে 'অ্যাডহক বিতরণ ক্যোয়ারী' ব্যবহার সক্ষম করতে পারে। 'অ্যাডহাক ডিস্ট্রিবিউটড ক্যোয়ারীস' সক্ষম করার বিষয়ে আরও তথ্যের জন্য, এসকিউএল সার্ভার বুকস অনলাইনে 'অ্যাডহক বিতরণ প্রশ্নাবলী' অনুসন্ধান করুন।

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 0
RECONFIGURE
GO

2

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

  • এসএসএমএসে সরঞ্জামসমূহ> বিকল্পসমূহ> প্রশ্নের ফলাফল> এসকিউএল সার্ভার> ফলাফলগুলিতে পাঠ্য যান
  • ট্যাব ডিলিমিটেড থেকে ডানদিকে আউটপুট ফর্ম্যাট পরিবর্তন করুন
  • ঠিক আছে ক্লিক করুন

এখন আপনি আপনার ক্যোয়ারীটি কার্যকর করতে পারেন, তারপরে সমস্ত ফলাফল নির্বাচন করতে একটি CTRL-A করুন, তারপরে ক্লিপবোর্ডে অনুলিপি করতে CTRL-C করুন, তারপরে এক্সেল 2013 এ স্যুইচ করুন (2007 সালেও এটি কাজ করতে পারে, নিশ্চিত নয়) এবং পেস্ট করুন - এক্সেলের ডিফল্ট ধরে ধরে ডিলিমিটারটি ট্যাবে সেট করা আছে।

এসএসএমএস প্রশ্নের বিকল্পগুলির স্ক্রিনের চিত্র of


-1

হ্যাঁ, আপনি যখন সার্ভারগুলিতে সরাসরি অ্যাক্সেস পাবেন তখন এগুলি সবই সম্ভব। তবে আপনি যদি কেবল ওয়েব / অ্যাপ্লিকেশন সার্ভার থেকে সার্ভারটিতে অ্যাক্সেস পেয়ে থাকেন? ভাল, পরিস্থিতিটি আমাদের অনেক আগে থেকেই ছিল এবং সমাধানটি ছিল সিএসভিতে এসকিউএল সার্ভার রফতানি


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