আমি কীভাবে সিএসভি ফাইলগুলিতে ওরাকল ডাটাবেস টেবিলগুলি আনলোড করতে পারি?


18

আমাকে ওরাকল 11 জি রিলিজ 1 ডাটাবেস থেকে কিছু তথ্য উদ্ধার করতে হবে এবং এক বা একাধিক সিএসভি ফাইল হিসাবে এটি সরবরাহ করতে হবে। ডেটা একাধিক টেবিল এবং / অথবা দর্শনগুলিতে থাকে। এই সমস্ত কমান্ড লাইনের মাধ্যমে কাজ করা উচিত। এর সেরা পন্থাটি কী হবে?

উত্তর:


11

অরুন,

এখন যে স্ক্রোলসিএলটি ওরাকল এসকিউএল বিকাশকারী 4.1 ইএ 2 (4.1.0.18.37) এর কাছ থেকে পাওয়া যায় আপনি এটি পুরানো এবং বিখ্যাত স্কেলপ্লাসের মতো ব্যবহার করতে পারেন। sqlcl এর সিএসভির জন্য একটি আউটপুট ফর্ম্যাট সেটিংস রয়েছে

set sqlformat csv
spool x.csv
select * from yourtable[s];
spool off

স্কিলসিএল চেকআউট ক্রিস ব্লগ সম্পর্কে আরও তথ্যের জন্য

এসএইচএলসিএল এর আগে এপেক্স ব্যবহার করা এবং রিপোর্টটি সিএসভিতে রফতানি করা সবচেয়ে সহজ ছিল। সাধারণ পুরাতন স্ক্যালপ্লাসে আপনি এটি ব্যবহার করে এটি করতে পারেন

set lines 9999 -- the appropriate size
set head off  -- no header lines
set colsep ';' --column separator to ;
set pages 0 -- no pages
set feed off
select your data;
spool to_tofile
/
spool off

ফলাফলগুলি যদি কোনও অ্যাপ্লিকেশন সার্ভার বা ক্লায়েন্টে লিখতে হয় তবে এটি সবচেয়ে ভাল কাজ করে। সেগুলি যদি ডাটাবেস সার্ভারে লিখতে হয় তবে utl_file আরও ভাল বিকল্প হতে পারে।

রোনাল্ড।


8

আপনার ইউটিএল_এফআইএল প্যাকেজটিতে অন্তর্নির্মিত হওয়া উচিত । আপনি এটি ব্যবহার করার বিভিন্ন উপায় রয়েছে।

  1. আপনি যে প্যাকেজগুলিতে ইউটিএল_এফআইএল প্যাকেজ ব্যবহার করে যে কোনও সংখ্যক ফাইলে লিখতে যে কোনও প্রক্রিয়া লিখতে পারেন। এসকিউএল * প্লাস সহ প্রায় কোনও অ্যাপ্লিকেশন থেকে এই পদ্ধতিগুলি কল করা যেতে পারে।

  2. আপনি একই কাজ করতে একটি পিএল / এসকিউএল স্ক্রিপ্ট লিখতে পারেন এবং এসকিউএল * প্লাস কমান্ড লাইন থেকে নিজেই কমান্ড লাইনে @ এসক্রিপ্ট নাম উল্লেখ করে স্ক্রিপ্টটি কল করতে পারেন।

  3. আপনি সরাসরি এসকিউএল * প্লাসে ইউটিএল_এফিল ব্যবহার করে একটি ব্লক পেস্ট করতে পারেন তবে এটি কেবলমাত্র এক সময়ের রফতানির জন্য ব্যবহার করা উচিত এবং তারপরেও এটি সেরা রুট নাও হতে পারে।

তাদের সহজ একটি ফাইল রপ্তানি UTL_FILE ব্যবহারে একটি কল গঠিত হবে fopen , এক বা একাধিক কল PUT_LINE , এবং একটি কল fclose


4

কর্মক্ষমতা যদি উদ্বেগের বিষয় হয় তবে আপনি বিক্রেতাদের কাছ থেকে নেওয়া সরঞ্জামগুলি বিবেচনা করতে চাইতে পারেন।

আমি বিএমসি, উইসডমফোর্স, কোসোর্ট, ডিবিসিগ্রেনের সরঞ্জামগুলি মূল্যায়ন করেছি। এগুলি সমস্ত স্পুল, utl_file বা বাহ্যিক সারণীর চেয়ে উল্লেখযোগ্যভাবে দ্রুত। আমরা ডিবিক্রেন ব্যবহার করছি কারণ আমার বস লাইসেন্সে খুব বেশি ব্যয় করতে চান নি।


3

আপনি সিএসভি ফর্ম্যাটে ডিস্কে ডেটা বের করতে পাইথন এবং সিএক্স_আরাকল মডিউল ব্যবহার করতে পারেন।

আপনি কীভাবে সিএক্স_আরাকল ব্যবহার করে ওরাকল এর সাথে সংযোগ স্থাপন করবেন তা এখানে:

constr='scott/tiger@localhost:1521/ORCL12'
con = cx_Oracle.connect(constr)
cur = con.cursor()

ডেটা আনার পরে আপনি পাইথন তালিকার মধ্য দিয়ে লুপ করতে পারেন এবং সিএসভি ফর্ম্যাটে ডেটা সংরক্ষণ করতে পারেন।

for i, chunk in enumerate(chunks(cur)):
    f_out.write('\n'.join([column_delimiter.join(row[0]) for row in chunk]))
    f_out.write('\n')

আমি যখন টেবিলহান্টার-ফর-ওরাকল লিখেছিলাম তখন আমি এই পদ্ধতির ব্যবহার করেছি

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