এসকিউএলাইটে সিএসভি আমদানি করুন


117

আমি একটি এসকিউএল টেবিলটিতে একটি সিএসভি ফাইল আমদানি করার চেষ্টা করছি।

সিএসভির উদাহরণ:

1,2
5,6
2,7

উদাহরণ কমান্ড:

sqlite> create table foo(a, b);
sqlite> .separator ,
sqlite> .import test.csv foo
Error: test.csv line 1: expected 2 columns of data but found 4

আমি নিশ্চিত না কেন এটি ছয় টুকরো ডেটা এবং দুটি কলাম সহ চারটি কলাম খুঁজে পাবে।


এটি প্রদর্শিত হয় যে কমান্ডটি প্রথম লাইনে কলামের শিরোনামের প্রত্যাশা করে এবং লাইন-টার্মিনেটরটি এরূপ হিসাবে স্বীকৃত নয়। 6 - 2 = 4
যান্ত্রিক_মেট

আমি কি কোনও লাইন-টার্মিনেটর নির্দিষ্ট করতে পারি বা আমার সিএসভি থেকে কোনও অনুপস্থিত রয়েছে?
মলি ওয়াল্টার্স

1
দেখে মনে হচ্ছে না আপনি SQLite কমান্ড-লাইন সরঞ্জাম থেকে লাইন-টার্মিনেটর নির্দিষ্ট করতে পারেন। আপনার কি এমন কোনও পাঠ্য-সম্পাদক রয়েছে (উইন্ডোজে নোটপ্যাডের মতো, তবে আরও ভাল) যা আপনাকে লাইন-টার্মিনেটিং অক্ষরগুলি প্রদর্শন করবে? তিনটি মূল প্রকরণ রয়েছে: \r\nউইন্ডোজে, \n* নিক্সে (আরও নতুন ম্যাকস অন্তর্ভুক্ত), \rপুরানো ম্যাকগুলিতে।
যান্ত্রিক_মেট

আমি বিবিএডিট ব্যবহার করছি, তবে লাইনের শেষে আমি এই চরিত্রগুলির কোনও দেখতে পাচ্ছি না। আমি সেগুলি ম্যানুয়ালি যোগ করার চেষ্টা করেছি, তবে এটি কিছুই করার মতো বলে মনে হচ্ছে না ...
মলি ওয়াল্টার্স

1
এই ওয়েবসাইটটি একটি সিএসভি (বা এক্সেল) ফাইলকে এসকিউএলাইটে
কোড

উত্তর:


153

মন্তব্যগুলিতে যা বলা হচ্ছে, এসকিউএলাইট আপনার ইনপুটটিকে 1, 25, 62, 7 হিসাবে দেখবে I আমারও সমস্যা ছিল এবং আমার ক্ষেত্রে এটি "বিভাজক," "মোড সিএসভি" র পরিবর্তনের মাধ্যমে সমাধান করা হয়েছিল। সুতরাং আপনি চেষ্টা করতে পারেন:

sqlite> create table foo(a, b);
sqlite> .mode csv
sqlite> .import test.csv foo

প্রথম কমান্ড টেবিলের জন্য কলামের নাম তৈরি করে। তবে, আপনি যদি কলামের নামগুলি সিএসভি ফাইল থেকে উত্তরাধিকার সূত্রে চান তবে আপনি সম্ভবত প্রথম লাইনটি উপেক্ষা করতে পারেন।


83
অন্য ব্যক্তিদের জন্য যারা এখানে অনুসন্ধান থেকে অবতরণ করেছেন, যদি আপনার সিএসভি ফাইলের প্রথম লাইনে কলামের নাম থাকে তবে আপনি প্রথম create tableকমান্ডটি বাদ দিতে পারেন এবং স্ক্লাইটটি সিএসভি ফাইল থেকে কলামের নাম ব্যবহার করবে।
আর্লক্র্যাপস্টোন

2
@ ইরলক্র্যাপস্টোন: আপনি কি আরও বিস্তারিত বলতে পারবেন? এটি আমার পক্ষে কাজ করবে বলে মনে হয় না।
d33tah

3
@ d33tah এই উদাহরণগুলি দেখুন । লক্ষ্য করুন যে প্রথম লাইনে কীভাবে কলামের নাম রয়েছে Year,Make,Model,Description,Priceএবং প্রকৃত ডেটা নেই। যদি আপনার সিএসভি ফাইলের ক্ষেত্রে এটি হয় তবে create tableকমান্ডটি ব্যবহার করে আপনাকে ম্যানুয়ালি টেবিলটি তৈরি করতে হবে না । .importকমান্ড কলাম নামে নির্ধারণ করতে আপনার ফাইলে প্রথম লাইন ব্যবহার এবং টেবিল অনুযায়ী তৈরি করবে। আপনাকে এখনও কমান্ডের মধ্যে সারণির নাম অন্তর্ভুক্ত করতে হবে । SQLite ডক্স থেকে একই তথ্য ।
আর্লক্র্যাপস্টোন

আপনি সেট করছেন কেন .mode? শুধু আউটপুট জন্য না?
অ্যালান

যদি আপনি দেখতে পান যে উত্পন্ন টেবিলটি এক সাথে একাধিক কলামকে দলবদ্ধ করে, আপনি একটি সংরক্ষিত শব্দ যেমন typeসিএসভি কলামের নাম ব্যবহার করছেন না তা পরীক্ষা করুন।
পলভগুলি

29

আমি এটি কীভাবে করেছি তা এখানে।

  • ট্যাব (pe টি) দ্বারা বিভক্ত করতে সিএসভি ফাইলটি তৈরি করুন / রূপান্তর করুন এবং কোনও উদ্ধৃতি দ্বারা আবদ্ধ করা হয়নি (স্ক্লাইট অক্ষরে অক্ষরে উদ্ধৃতি দেয় - পুরানো ডকস বলে)
  • ডিবিতে স্ক্লাইট শেলটি প্রবেশ করান যেখানে ডেটা যুক্ত করা দরকার

    sqlite> .separator "\t" ---IMPORTANT! should be in double quotes sqlite> .import afile.csv tablename-to-import-to


একাধিক সারিগুলির জন্য, আমার টিএসভি-র এই কমান্ডটি দিয়ে ROW বিভাজক নির্দিষ্ট করা দরকার .separator "\t" "\r"
এমফিংক

1
যখন ফাইল ফরম্যাট নিয়ে আলোচনা, TSV = CSV দেখুন! Tools.ietf.org/html/rfc4180
অ্যালান

24

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

আপনি যদি আবার স্ক্লাইট জিনিসগুলি না করেন (আমার মতো), এটি আপনাকে একটি ওয়েব অনুসন্ধান বা দুটি সংরক্ষণ করতে পারে:

স্ক্লাইট শেল এ প্রবেশ করুন:

$ sqlite3 yourfile.sqlite
sqlite>  .mode csv
sqlite>  .import test.csv yourtable
sqlite>  .exit

আপনি যদি আপনার ম্যাকটিতে স্ক্লাইটাইট ইনস্টল না করে থাকেন তবে চালান

$ brew install sqlite3

হোমব্রিউ কীভাবে ইনস্টল করতে হয় তার জন্য আপনাকে একটি ওয়েব অনুসন্ধান করতে হবে।


1
unescaped " characterসতর্কতাগুলি কীভাবে পরিচালনা করবেন ?
টিএমটিটিএম

আপনি যদি আমদানি করার আগে কোনও টেবিল তৈরি করেন তবে এটি শিরোনামের সন্ধান করবে না।
রল্ফ

আমাকে একই ফোল্ডারে যেখানে sqlite3.exe অবস্থিত সেখানে ফাইল রাখতে হবে। আমি কি সিএসভি ফাইলের জন্য অন্য পথ ব্যবহার করতে পারি?
জয়দীপ কারিনা

গৌণ বিন্দু: "যদি আপনি আপনার ম্যাকের উপর স্ক্লাইটাইট ইনস্টল না করে থাকেন" ... আফ্রিক এটি ডিফল্টরূপে ইনস্টল করা আছে।
ল্যারিক্স ডেসিডুয়া

8

। आयात কমান্ডের আগে ".mode csv" টাইপ করুন


5
.মোডটি কেবলমাত্র আউটপুট জন্য
ডিলিরিয়ামট্রেইমস

9
দৃশ্যত তাই না। .পোর্ট ডক্টর বিভাগ থেকে: নোট করুন যে ".Import" কমান্ড চালানোর আগে "মোড" কে "সিএসভি" তে সেট করা গুরুত্বপূর্ণ। কমান্ড-লাইন শেলটিকে ইনপুট ফাইলের পাঠ্যকে অন্য কোনও ফর্ম্যাট হিসাবে ব্যাখ্যা করার চেষ্টা থেকে বিরত রাখতে এটি প্রয়োজনীয়।
রিচার্ড - রাগ ওয়েভ লিমিটেড

8

কীভাবে sqlite3 এ CSV ফাইলটি আমদানি করবেন

  1. ডাটাবেস তৈরি করুন

    sqlite3 NYC.db
  2. মোড এবং টেবিলের নাম সেট করুন

    .mode csv tripdata
  3. সিএসভি ফাইল ডেটা sqlite3 এ আমদানি করুন

    .import yellow_tripdata_2017-01.csv tripdata
  4. টেবিলগুলি সন্ধান করুন

    .tables
  5. আপনার টেবিল স্কিমাটি সন্ধান করুন

    .schema tripdata
  6. সারণী ডেটা সন্ধান করুন

    select * from tripdata limit 10;
  7. সারণীতে সারিগুলির সংখ্যা গণনা করুন

    select count (*) from tripdata;

4

সঙ্গে Termsql আপনি এক লাইন এটা করতে পারেন:

termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db


লিঙ্কটি ভাঙ্গা হয়েছিল, গিথুব রেপোতে পরিবর্তন করা হয়েছে - দয়া করে স্পষ্ট করুন!
Andreas Niedermair

3

আমার ঠিক একই সমস্যা ছিল (এসকিউলাইট ৩.৩.১.৩ সহ ওএস এক্স ম্যাভারিক্স ১০.৯.১ এ, তবে আমি মনে করি না এসকিউএলাইট কারণটির সাথে সম্পর্কিত)। আমি এমএস এক্সেল ২০১১ থেকে সংরক্ষিত সিএসভি ডেটা আমদানির চেষ্টা করেছি, যা বিটিডব্লিউ। ';'কলাম বিভাজক হিসাবে ব্যবহার করে । আমি জানতে পেরেছি যে এক্সেল থেকে সিএসভি ফাইলটি ম্যাক ওএস থেকে 9 বার এখনও নিউলাইন চরিত্রটি ব্যবহার করে, এটি ইউনিক্স নিউলাইনে পরিবর্তন করে সমস্যার সমাধান করে। আফার বিবিএডিট এর জন্য কমান্ড রয়েছে, পাশাপাশি সাব্লাইম টেক্সট 2।


2
এটি ব্যবহার করা সহজ tr -s '\r' '\n'এবং এটি এলোমেলো ফাইলের সাথে কাজ করবে।
ডোনাল ফেলো

1

পদক্ষেপগুলো অনুসরণ কর:-

  1. 1] sqlite3 নাম 2] .মোড CSV টেবিলের নাম 3] .অনাম ফাইল ফাইল। CSv টেবিলের নাম

0

কিছু ওয়েবসাইট এবং অন্যান্য নিবন্ধ যেমন সুনির্দিষ্ট করে, এর সাধারণগুলির এটিতে একটি নজর রাখা উচিত। https://www.sqlitetutorial.net/sqlite-import-csv/

csvফাইলের জন্য আমাদের বিভাজক নির্দিষ্ট করার দরকার নেই , কারণ সিএসভির অর্থ কমা বিচ্ছিন্ন। sqlite> .separator ,এই লাইনের কোন প্রয়োজন নেই।

sqlite> create table cities(name, population);
sqlite> .mode csv
sqlite> .import c:/sqlite/city_no_header.csv cities

এটি নির্বিঘ্নে কাজ করবে :)

পিএস: শিরোনাম সহ আমার শহরগুলি সিএসভি।


name,population
Abilene,115930
Akron,217074
Albany,93994
Albuquerque,448607
Alexandria,128283
Allentown,106632
Amarillo,173627
Anaheim,328014

2
.save someFileNameশেষ পর্যন্ত চালাতে ভুলবেন না অবশেষে এটিকে ডিস্কে মেমরি ডাটাবেস ফাইলটিতে রফতানি করতে আমাকে খুঁজে নিতে ঘন্টা সময় নিয়েছে
ioopl
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.