আমি কীভাবে একটি মাইএসকিউএল টেবিলের মধ্যে সিএসভি ফাইল আমদানি করব?


306

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

CREATE TABLE 'CSVImport' (id INT);
ALTER TABLE CSVImport ADD COLUMN Title VARCHAR(256);
ALTER TABLE CSVImport ADD COLUMN Company VARCHAR(256);
ALTER TABLE CSVImport ADD COLUMN NumTickets VARCHAR(256);
...
ALTER TABLE CSVImport Date49 ADD COLUMN Date49 VARCHAR(256);
ALTER TABLE CSVImport Date50 ADD COLUMN Date50 VARCHAR(256);

টেবিলে কোনও প্রতিবন্ধকতা নেই এবং সমস্ত ক্ষেত্রগুলি VARCHAR (256) মান ধারণ করে, কলামগুলিতে (আইএনটি দ্বারা উপস্থাপিত), হ্যাঁ / না (বিআইটি দ্বারা উপস্থাপিত), মূল্য (ডিসিআইএমএল দ্বারা উপস্থাপিত) এবং পাঠ্য অস্পষ্টতাগুলি ( পাঠ্য দ্বারা উপস্থাপিত)।

আমি ফাইলটিতে ডেটা লোড করার চেষ্টা করেছি:

LOAD DATA INFILE '/home/paul/clientdata.csv' INTO TABLE CSVImport;
Query OK, 2023 rows affected, 65535 warnings (0.08 sec)
Records: 2023  Deleted: 0  Skipped: 0  Warnings: 198256
SELECT * FROM CSVImport;
| NULL             | NULL        | NULL           | NULL | NULL               | 
...

পুরো টেবিলটি ভরে গেছে NULL

আমি মনে করি সমস্যাটি হ'ল পাঠ্য ব্লার্বগুলিতে একাধিক লাইন রয়েছে এবং মাইএসকিউএল ফাইলটি এমনভাবে পার্স করছে যেন প্রতিটি নতুন লাইন একটি ডাটাবেজ সারির সাথে সঙ্গতি রাখে। আমি কোনও সমস্যা ছাড়াই ওপেন অফিসে ফাইলটি লোড করতে পারি।

ক্লায়েন্টডেটা.সিএসভি ফাইলটিতে 2593 টি লাইন এবং 570 রেকর্ড রয়েছে। প্রথম লাইনে কলামের নাম রয়েছে। আমি মনে করি এটি কমা বিস্মৃত এবং টেক্সট দৃশ্যত ডাবলকোটের সাথে সীমাবদ্ধ।

হালনাগাদ:

সন্দেহ হলে, ম্যানুয়ালটি পড়ুন: http://dev.mysql.com/doc/refman/5.0/en/load-data.html

আমি LOAD DATAবিবৃতিতে কিছু তথ্য যুক্ত করেছি যে ওপেনঅফিস অনুমান করার জন্য যথেষ্ট স্মার্ট ছিল এবং এখন এটি রেকর্ডের সঠিক সংখ্যাটি লোড করে:

LOAD DATA INFILE "/home/paul/clientdata.csv"
INTO TABLE CSVImport
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

তবে এখনও প্রচুর NULLরেকর্ড রয়েছে এবং লোড হওয়া ডেটারগুলির কোনওটিই সঠিক জায়গায় বলে মনে হয় না।


17
এবং যদি আপনি ওএসএক্স সিকুয়েল প্রো- তে থাকেন একটি দুর্দান্ত আমদানি সরঞ্জাম রয়েছে এবং এটি বিনামূল্যে ;-)
মেরিক

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

@ ক্রিসিসায়ারফাইস: আমি মনে করি গৃহীত উত্তরগুলি এটি ভালভাবে ব্যাখ্যা করেছে। 'লোড ডেটা' কমান্ডটি তৈরি করতে তাঁর কিছু সহায়তার প্রয়োজন ছিল, যা কোনও গ্রাফিকাল প্রোগ্রাম সাহায্য করতে পারে। গ্রাফিকাল প্রোগ্রামটি 'লোড ডেটা' কমান্ডটি তৈরি করার পরে, তিনি এটি প্রোগ্রামিকভাবে আবার ব্যবহার করতে পারেন।
অ্যালেক্সসি

@ মেরিক এটি অসক্স
ওয়েভওফথ্রাইড

আমি এক্সেলের একটি সিনট্যাক্স জেনারেটর সরঞ্জামের সাথে সিএসভি ডেটা মাইএসকিএলে লোড করার জন্য বিস্তৃত টিউটোরিয়াল লিখেছিলাম ।
mysql_user

উত্তর:


133

আপনার সমস্যার মূলটি টেবিলের সাথে সিএসভি ফাইলের কলামগুলির সাথে মিলছে বলে মনে হচ্ছে।

অনেক গ্রাফিকাল মাইএসকিউএল ক্লায়েন্টের এই জাতীয় জিনিসটির জন্য খুব সুন্দর আমদানি সংলাপ রয়েছে।

কাজের জন্য আমার প্রিয় উইন্ডোজ ভিত্তিক হাইডিএসকিউএলLOAD DATAকমান্ডটি তৈরি করতে এটি আপনাকে গ্রাফিকাল ইন্টারফেস দেয় ; আপনি পরবর্তীতে এটি পুনরায় ব্যবহার করতে পারেন।

পাঠ্য ফাইল আমদানি করুন

স্ক্রিনশট: "আমদানি পাঠ্য ফাইল" ডায়ালগ

আমদানি পাঠ্য ফাইলটি "ডায়ালগ খুলতে, এখানে যান Tools > Import CSV file:

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


25
ম্যাক ওএসএক্সের জন্য সিকোয়েল প্রো ব্যবহার করুন।
আগি হামারথিফ

3
আমি এটি চেষ্টা করেছি এবং কলামের নাম ব্যবহার না করে প্রথমে আমার টেবিলটি তৈরি করা দরকার।
ডোমিনিক

3
আপনি চালিয়ে যাওয়ার আগে আপনাকে একটি টেবিল নির্বাচন করতে হবে ... এবং যেহেতু পুরো পয়েন্টটি টেবিলটি তৈরি করতে হবে না ...
ডোমিনিক

3
নোট করুন যে লিনাক্সে, হাইডিএসকিউএল ওয়াইনের অধীনে খুব ভাল কাজ করে।
আলেজান্দ্রোভিডি

1
@ পোলের উত্তরের একদম পয়েন্ট হ'ল জিইউআই সরঞ্জামগুলি টেবিল কলামগুলিতে মেলানো আমদানি কলামগুলিকে সহজ করে তুলতে পারে।
পেক্কা

191

ডাটাবেসে একটি টেবিল লোড করতে mysqlimport ব্যবহার করুন :

mysqlimport --ignore-lines=1 \
            --fields-terminated-by=, \
            --local -u root \
            -p Database \
             TableName.csv

আমি এটি http://chriseiffel.com / প্রতিটি জিনিস-linux/how-to-import-a-large-csv-file-to-mysql/ এ পেয়েছি

ডিলিমিটারটিকে একটি ট্যাব করতে, ব্যবহার করুন --fields-terminated-by='\t'


6
mysqlimportLOAD DATA INFILE...পর্দার আড়ালে ব্যবহার করে, তাই এটি প্রায় একই জিনিস।
ম্লাদেন জাব্লানোভিć

8
যেমনটি LOAD DATA INFILEব্যবহার করার আগে আপনাকে একটি টেবিল তৈরি করতে হবে mysqlimport
মার্কাস ডাউনিং

@ ম্লাদেন জাব্লানভিভি, এটি অবশ্যই একই জিনিস নয়। 1 বিল বিল সারি আমদানি করে দেখুন। পারফরম্যান্সের ক্ষেত্রে এটি কী বিশাল পার্থক্য করে তা অবাক হবেন
নিনজবার

@ এনঞ্জাববার ডকস বলেছেন যে মাইএসকিপ্লিম্পোর্ট ক্লায়েন্টটি লোড ডেটা ইনফাইলে একটি কমান্ড-লাইন ইন্টারফেস সরবরাহ করে , সুতরাং কোনও পারফরম্যান্স সুবিধা উপস্থাপন করা তাত্ত্বিকভাবে অসম্ভব LOAD DATA INFILE
ম্লাদেন জাব্লানোভিć

1
এছাড়াও প্রয়োজন --fields-optionally-enclosed-by=\"এবং field - ফিল্ডস-পলায়ন = = \ `
চ্যানটং

80

সবচেয়ে সহজ উপায় যা আমি 200+ সারি আমদানি করেছি phpmyadmin sql উইন্ডোতে কমান্ডের নীচে

আমার কাছে দুটি সাধারণ কলাম কান্ট্রি আইড, কান্ট্রি নাম সহ দেশের একটি সাধারণ টেবিল রয়েছে

এখানে .csv ডেটাসিএসভি ফাইল

কমান্ডটি এখানে:

LOAD DATA INFILE 'c:/country.csv' 
INTO TABLE country 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS

দ্বিতীয় কলামে একটি জিনিস মনে রাখবেন, উপস্থিত হবে না, অন্যথায় আপনার আমদানি বন্ধ হয়ে যাবে


1
',' -> '\ T', ' "' -> TSV ফাইল ক্ষেত্রে '' এবং গত লাইন অপসারণ কোন হেডার (আশা অনুসন্ধান ক্রলার সূচক
রক্তপাত ফিঙ্গারস

16
এটি যদি স্থানীয় ফাইল হয় তবে আপনার প্রয়োজন হতে পারে LOAD DATA LOCAL INFILE। যদি এটি একটি ত্রুটি 1148 "ব্যবহৃত কমান্ডের অনুমতি দেওয়া হয় না" ফেলে দেয় তবে আপনি কমান্ড লাইনে mysql চালিয়ে এটি সক্ষম করতে পারেন --local-infile
বিগ ম্যাকলার্জহিউজ

আমি ত্রুটিটি পেয়েছি: ERROR 1045 (28000): ব্যবহারকারীর 'ব্যবহারকারী' @ '%' এর জন্য অ্যাক্সেস প্রত্যাখ্যান করা হয়েছে (পাসওয়ার্ড ব্যবহার করে: হ্যাঁ)
আরুনবলান এনভি

প্রশাসক প্যানেল থেকে আপনাকে অবশ্যই ব্যবহারকারীকে সমস্ত অ্যাক্সেস দিতে হবে, স্ক্রিপ্টটি আমদানির চেষ্টা করুন try
ডেরেডভিল

1
আমি এই ত্রুটিটি পাচ্ছি: মাইএসকিউএল সার্ভারটি - সুরক্ষা-ফাইল-বেসরকারী বিকল্পের সাথে চলছে তাই এটি এই বিবৃতিটি কার্যকর করতে পারে না
অগ্নিস্বর বকশি

66

আমি জানি যে প্রশ্ন বয়সী , কিন্তু আমি চাই ভাগ এই

আমি এই পদ্ধতিটি 0.046 সেকেন্ডে 100 কে রেকর্ড ( M 5MB ) বেশি আমদানি করতে ব্যবহার করেছি

আপনি এটি কীভাবে করেন তা এখানে:

LOAD DATA LOCAL INFILE  
'c:/temp/some-file.csv'
INTO TABLE your_awesome_table  
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(field_1,field_2 , field_3);

সর্বশেষ লাইনটি অন্তর্ভুক্ত করা খুব গুরুত্বপূর্ণ, যদি আপনার একাধিক ক্ষেত্র থাকে তবে সাধারণত এটি সর্বশেষ ক্ষেত্রটি এড়িয়ে যায় (মাইএসকিউএল 5.6.17)

LINES TERMINATED BY '\n'
(field_1,field_2 , field_3);

তারপরে, ধরে নিলে আপনার ক্ষেত্রগুলির শিরোনাম হিসাবে আপনার প্রথম সারি রয়েছে, আপনি এই লাইনটিও অন্তর্ভুক্ত করতে চাইতে পারেন

IGNORE 1 ROWS

আপনার ফাইলে একটি শিরোনাম সারি থাকলে এটি দেখতে দেখতে এটি দেখতে হ'ল।

LOAD DATA LOCAL INFILE  
'c:/temp/some-file.csv'
INTO TABLE your_awesome_table  
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(field_1,field_2 , field_3);

আমি 16k সারি এবং 48 কলামগুলি আমদানি করেছি। ধন্যবাদ বন্ধু.
রেনজিথ ভিআর

এটিই সেরা সমাধান। এটি কতোটা আগ্রহী কারও জন্য: আমি জাহাজে মাইএসকিউএল সার্ভার (কোনও উচ্চতর পারফরম্যান্স আরডিএস নয়) এর সাথে আমি 20 ডলার / এমওডাব্লিউএস লাইটসেল উদাহরণে 14 সেকেন্ডের নীচে 3.2 মিলিয়ন সারি আমদানি করেছি। অসাধারণ!
মাস্টার_গ্র্যাসি

এই লাইনে, (field_1,field_2 , field_3);এটি কি .csv ফাইলের কলামগুলির তালিকা বা কোনও টেবিলের উল্লেখ করে? অর্থাত্ এই ক্ষেত্রগুলি কী?
tera_789

@ tera_789 আপনার সিএসভি ফাইলে যেগুলি সম্ভবত আপনার টেবিলের সাথে মেলে
ফাহাদ

অবশ্যই ডেটা ফর্ম্যাটটি অনুসরণ করতে হবে। উদাহরণ (আমার মামলার জন্য) <পূর্ব> প্রথম নাম, শেষ নাম, দোব, ফোন_নবার, ইমেল, নাম, লাস্টনাম, 12-05-2018,54545, ফাইজ @ gmail.com, নাম 1, লাস্টনাম 1,2018-05-12,456, ফাইজ 1 @ জিমেইল .com, নাম 2, সর্বশেষ নাম 2,2018-05-12,456, ফাইজ 2 @ gmail.com, নাম 3, শেষ নাম 3,2018-05-22,456, ফাইজ 3 @ জিমেইল ডটকম, নাম 4, লাস্টনাম 4,1988-05-22,456, ফাইজ 4 @ gmail.com , নাম 5, সর্বশেষ নাম 5,1988-05-22,456, ফাইজ 5 @ জিমেইল ডটকম, নাম 6, শেষ নাম 6,1987-05-21,456, ফাইজ 6 @ জিমেইল ডটকম </ translation>
ফয়েজ আহমেদ

32

phpMyAdmin CSV আমদানি পরিচালনা করতে পারে। পদক্ষেপগুলি এখানে:

  1. মাইএসকিউএল টেবিল ক্ষেত্রগুলির মতো একই ক্রমে ক্ষেত্রগুলি রাখতে সিএসভি ফাইল প্রস্তুত করুন।

  2. সিএসভি থেকে শিরোনাম সারিটি (যদি থাকে) সরিয়ে ফেলুন, যাতে কেবল ফাইলটিতে ডেটা থাকে।

  3. PhpMyAdmin ইন্টারফেসে যান।

  4. বাম মেনুতে টেবিলটি নির্বাচন করুন।

  5. শীর্ষে আমদানি বোতামটি ক্লিক করুন।

  6. সিএসভি ফাইলে ব্রাউজ করুন।

  7. "লোড ডেটা ব্যবহার করে সিএসভি" বিকল্পটি নির্বাচন করুন।

  8. "দ্বারা সমাপ্ত ক্ষেত্রগুলিতে", "প্রবেশ করান।

  9. ডাটাবেস সারণীতে কলামের নামগুলি একই ক্রমে লিখুন।

  10. গো বোতামটি ক্লিক করুন এবং আপনার কাজ শেষ হয়েছে।

এটি একটি নোট যা আমি আমার ভবিষ্যতের ব্যবহারের জন্য প্রস্তুত করেছি এবং অন্য কেউ উপকৃত হতে পারলে এখানে ভাগ করে নিচ্ছি।


এটি ভাল এবং সহজ। আমি এসকিউএল এর মাধ্যমে টেবিল এবং কলাম তৈরি করতে পছন্দ করি (তাই আমি পদক্ষেপ # 9 এড়িয়ে যাচ্ছি) এবং সিএসভি আমদানির মাধ্যমে ডেটা serোকানো। NULLকোনও স্ব-বর্ধমান ক্ষেত্র / কলামগুলির জন্য সিএসভিতে সেট করতে ভুলবেন না ।
রৌপ্য

দ্রষ্টব্য যে পিএইচপিএমওয়াই অ্যাডমিন মারাত্মকভাবে ব্যর্থ হয় যখন সিরিলিক চরগুলি সিএসভি ফাইলে অন্তর্ভুক্ত করা হয় তবে আপনি এটি utf-8 ব্যবহার করতে বলুন না কেন।
ফ্রান মারজোয়া

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

আপনি কোনও স্থানীয় সিএসভি ফাইল ব্রাউজ করতে না পারার জন্য প্রথমে একটি ওয়েব ক্লায়েন্টে .csv ফাইলটি ডাউনলোড করা দরকার requires
mckenzm

হ্যাঁ আপনি পারবেন, আপনার 'স্থানীয় কীওয়ার্ড' চিহ্নিত চিহ্নযুক্ত চেকবক্সটি পরীক্ষা করতে হবে এবং আপনি একটি স্থানীয়
সিএসভি

12

আপনি লোড ডেটা বিবৃতিতে কলামগুলি তালিকা করে এটি ঠিক করতে পারেন। ম্যানুয়াল থেকে :

LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);

... সুতরাং আপনার ক্ষেত্রে আপনার 99 টি কলামগুলি সিএসভি ফাইলে যে ক্রমে প্রদর্শিত হবে সেগুলি তালিকাবদ্ধ করতে হবে।


8

এটি চেষ্টা করুন, এটি আমার জন্য কাজ করেছিল

    LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 ROWS;

ইগনোর 1 টি সারি এখানে প্রথম সারিতে অগ্রাহ্য করে যা ক্ষেত্রের নামগুলি রয়েছে। নোট করুন ফাইলের নামের জন্য আপনাকে অবশ্যই ফাইলটির পরম পথটি টাইপ করতে হবে।


এটি সেরা উত্তর। যখন একটি একক এসকিউএল কমান্ডটি করবে তখন কেন অন্য সরঞ্জাম ব্যবহার করবেন?
sdgfsdh

আপনি যখন কোনও সার্ভারে চলমান মাইএসকিএল-তে ফাইল লোড করার চেষ্টা করছেন তখন কীভাবে আপনি এই কাজটি করবেন তা জানেন? এটি আমাকে ফাইল (পাসওয়ার্ড) এর জন্য অস্বীকৃত অ্যাক্সেস জিজ্ঞাসা করে। সিএসভি ফাইলের অবস্থানের পাসওয়ার্ড কোথায় প্রবেশ করবেন?
বকতাওয়ার

7

মাইএসকিএল কমান্ড লাইনটি আমদানিতে খুব বেশি সমস্যার সম্মুখীন। কিভাবে আপনি এটা করবেন এখানে:

  • শূন্যস্থান না থাকায় শিরোনামের নাম সম্পাদনা করতে এক্সেল ব্যবহার করুন
  • .csv হিসাবে সংরক্ষণ করুন
  • একটি নতুন টেবিল আমদানি করতে এবং স্বয়ংক্রিয়ভাবে তৈরি করতে বিনামূল্যে নাভিচ্যাট লাইট এসকিএল ব্রাউজার ব্যবহার করুন (এটির নাম দিন)
  • নতুন টেবিলটি খুলুন আইডির জন্য একটি প্রাথমিক অটো নম্বর কলাম openোকান
  • পছন্দসই কলামগুলির ধরণ পরিবর্তন করুন।
  • সম্পন্ন!

5

আপনি যদি মাইএসকিউএল ওয়ার্কবেঞ্চ ব্যবহার করছেন (বর্তমানে 6.3 সংস্করণ) আপনি এটি দ্বারা এটি করতে পারেন:

  1. "টেবিলগুলিতে" রাইট ক্লিক করুন;
  2. সারণী ডেটা আমদানি উইজার্ড চয়ন করুন;
  3. আপনার সিএসভি ফাইল চয়ন করুন এবং নির্দেশাবলী অনুসরণ করুন (জেএসওএনও ব্যবহার করা যেতে পারে); ভাল কথাটি হ'ল আপনি যে বিদ্যমান সিএসভিতে ডেটা আমদানি করতে বা লোড করতে চান সেই সিএসভি ফাইলের উপর ভিত্তি করে আপনি একটি নতুন টেবিল তৈরি করতে পারেন

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


+1 টি। আমি এটি ব্যবহার করেছি কারণ মাইএসকিএল আমাকে ত্রুটি দেয় LOAD DATA INFILEএবং mysqlimport("এটি
মাইএসকিএলের

এই পদ্ধতিটি কাজ করে তবে ধীর ধরণের। আমি ভাবতাম যে এই বৈশিষ্ট্যটি ব্যবহার করা একটি বিশাল INSERTকোয়েরি তৈরি করেছে এবং এটি একবারে করার চেষ্টা করেছিল, তবে মনে হচ্ছে এটি এভাবে করা আসলে INSERTপ্রতি সারিতে একবার চালায় ।
ডেভ দ্যমিনিয়ন

4

আমি অদ্ভুত কিছু দেখতে পাচ্ছি। আপনি এনকোলোজিংয়ের জন্য একই অক্ষরটি এসকেপিংয়ের জন্য ব্যবহার করছেন। সুতরাং ইঞ্জিনটি কোনও "" "সন্ধান করলে কী করণীয় তা জানে না এবং আমি মনে করি সে কারণেই কিছুই সঠিক জায়গায় উপস্থিত বলে মনে হচ্ছে না I আমি মনে করি আপনি যদি এসকেপিংয়ের লাইনটি সরিয়ে থাকেন তবে দুর্দান্ত চালানো উচিত Like লাইক:

LOAD DATA INFILE "/home/paul/clientdata.csv"
INTO TABLE CSVImport
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

আপনি যদি নিজের সিএসভি বিশ্লেষণ না করেন (ম্যানুয়ালি, ভিজ্যুয়ালি, ...) এবং কোন অক্ষর পালানোর জন্য ব্যবহার করে তা খুঁজে না পান। কখনও কখনও '\' হয়। তবে আপনার যদি এটি না থাকে তবে এটি ব্যবহার করবেন না।


3

তবুও আরেকটি সমাধান হ'ল আশ্চর্যজনক সিএসভিকিট স্যুট থেকে সিএসভিএসকিএল সরঞ্জামটি ব্যবহার করা ।

ব্যবহারের উদাহরণ:

csvsql --db mysql://$user:$password@localhost/$database --insert --tables $tablename  $file

এই সরঞ্জামটি স্বয়ংক্রিয়ভাবে ডেটা প্রকারগুলি (ডিফল্ট আচরণ) নির্ধারণ করতে পারে, সারণী তৈরি করতে এবং তৈরি টেবিলটিতে ডেটা inোকাতে পারে। --overwriteটেবিলটি ইতিমধ্যে বিদ্যমান থাকলে ড্রপ করতে বিকল্পটি ব্যবহার করা যেতে পারে। --insertবিকল্প - ফাইল থেকে টেবিলটি পপুলেট করতে।

স্যুটটি ইনস্টল করতে

pip install csvkit

পূর্বশর্ত: python-dev , libmysqlclient-dev,MySQL-python

apt-get install python-dev libmysqlclient-dev
pip install MySQL-python

3

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

উদাহরণ ফাইল: Overseas_trade_indexডেটা সিএসভি ফাইল

পদক্ষেপ:

  1. এর জন্য সারণী তৈরি করা দরকার overseas_trade_index

  2. সিএসভি ফাইল সম্পর্কিত কলাম তৈরি করা দরকার।

    এসকিউএল ক্যোয়ারী:

    ( id int not null primary key auto_increment,
    series_reference varchar (60),
    period varchar (60),
    data_value decimal(60,0),
    status varchar (60),
    units varchar (60),
    magnitude int(60),
    subject text(60),
    group text(60),
    series_title_1 varchar (60),
    series_title_2 varchar (60),
    series_title_3 varchar (60),
    series_title_4 varchar (60),
    series_title_5 varchar (60),
     );
  3. টার্মিনালে mysql ডাটাবেস সংযোগ প্রয়োজন।

    =>show databases;
    =>use database;
    =>show tables;
  4. মাইএসকিএল টেবিলগুলিতে সিএসভি ডেটা আমদানি করতে দয়া করে এই কমান্ডটি প্রবেশ করুন।

    load data infile '/home/desktop/Documents/overseas.csv' into table trade_index fields terminated by ',' lines terminated by '\n' (series_reference,period,data_value,status,units,magnitude,subject,series_title1,series_title_2,series_title_3,series_title_4,series_title_5);
  5. স্কেলডাটাবেজে বিদেশের এই সূচী ডেটা সন্ধান করুন:

    select * from trade_index;

2

আপনি যদি এক্সেল স্প্রেডশিট লোডযুক্ত উইন্ডোজ মেশিন ব্যবহার করেন তবে এক্সেলের নতুন মাইএসকিউএল প্লাগইনটি অসাধারণ। ওরাকলের লোকেরা সত্যিই সেই সফ্টওয়্যারটিতে একটি দুর্দান্ত কাজ করেছে। আপনি এক্সেল থেকে সরাসরি ডাটাবেস সংযোগ তৈরি করতে পারেন। এই প্লাগইনটি আপনার ডেটা বিশ্লেষণ করবে এবং ডেটার সাথে সামঞ্জস্য রেখে আপনার জন্য টেবিলগুলি সেট আপ করবে। রূপান্তর করার জন্য আমার কাছে কিছু দানব বড় সিএসভি ফাইল ছিল। এই সরঞ্জামটি একটি বড় সময় সেভার ছিল।

http://dev.mysql.com/downloads/windows/excel/

আপনি এক্সেলের মধ্যে থেকে এমন আপডেটগুলি করতে পারেন যা অনলাইনে ডাটাবেসে জনপ্রিয় হবে। এটি অতি সস্তার GoDaddy হোস্টিং হোস্টিংয়ে তৈরি মাইএসকিএল ফাইলগুলির সাথে অপরিসীম ভাল কাজ করেছে well (নোট আপনি যখন GoDaddy এ টেবিলটি তৈরি করেন তখন আপনাকে ডাটাবেসের সাইট অ্যাক্সেস বন্ধ করতে কিছু অফ-স্ট্যান্ডার্ড সেটিংস নির্বাচন করতে হবে ...)

এই প্লাগইনটি দিয়ে আপনার এক্সএল স্প্রেডশিট এবং অনলাইন মাইএসকিউএল ডেটা স্টোরেজগুলির মধ্যে খাঁটি আন্তঃক্রিয়াশীলতা রয়েছে।


2

আমি একই কাজটি করার জন্য মাইএসকিএল ওয়ার্কবেঞ্চ ব্যবহার করি।

  1. নতুন স্কিমা তৈরি করুন
  2. সদ্য নির্মিত স্কিমা খুলুন
  3. "টেবিলগুলিতে" ডান ক্লিক করুন এবং "সারণী ডেটা আমদানি উইজার্ড" নির্বাচন করুন
  4. সিএসভি ফাইলের পাথ এবং টেবিলের নাম দিন এবং শেষ পর্যন্ত আপনার কলামের ধরণটি কনফিগার করুন কারণ উইজার্ড তাদের মানগুলির উপর ভিত্তি করে ডিফল্ট কলামের ধরণ সেট করে।

দ্রষ্টব্য: "টেল-ফ [mysqlworkbenchpath] /log/wb*.log" ব্যবহার করে যে কোনও ত্রুটির জন্য মাইএসকিএল ওয়ার্কবেঞ্চের লগ ফাইলটি একবার দেখুন


আপনার উত্তরের জন্য অনেক ধন্যবাদ - মাইএসকিউএলে নতুন হওয়া সম্পর্কে আমি এই সম্পর্কে জানতাম না - এটি আমাকে সিএসভিতে সহায়তা করেছিল। এখন, আমারও অ্যাক্সেস থেকে 10 টি টেবিল আমদানি করা দরকার - আপনি কী ভাবেন যে সবচেয়ে সহজ উপায় হ'ল এই টেবিলগুলি এক্সেলের মধ্যে এক্সেল থেকে সিএসভিতে রফতানি করা এবং তারপরে এই পদক্ষেপগুলি ব্যবহার করা হবে?
নাওমি

আমি দেখতে পেয়েছি যে এই পদ্ধতিটি সমস্ত সারি আমদানি করে না :( 5,342 সারিগুলির মধ্যে এটি আমার জন্য কেবল 2,485 টি সারি আমদানি করেছিল Why কেন এটি?
নওমী

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

1

এখানে নমুনা এক্সেল ফাইল স্ক্রিন শট রয়েছে:

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

হিসাবে সংরক্ষণ করুন এবং .csv চয়ন করুন।

আপনি নোটপ্যাড ++ বা অন্য কোনও নোটপ্যাড ব্যবহার করে খুললে আপনার নীচে .csv ডেটা স্ক্রিন শটটি প্রদর্শিত হবে।

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

নিশ্চিত করুন যে আপনি শিরোনাম সরিয়েছেন এবং মাইএসকিএল টেবিলের মতো .csv তে কলামের প্রান্তিককরণ রয়েছে। আপনার ফোল্ডারের নাম দ্বারা ফোল্ডার_নাম প্রতিস্থাপন করুন

লোড ডেটা স্থানীয় তথ্য
'ডি: /folder_name/myfilename.csv' ট্যাবলে মেইল ​​FIELDS দ্বারা সংযুক্ত ',' (নাম, নাম, ইমেল, ফোন);

যদি বড় ডেটা হয়, আপনি কফি নিতে পারেন এবং এটি লোড করতে পারেন!

আপনার যা দরকার তা ঠিক।



0

মাইএসকিএল ডাটাবেসে সিএসভি ফাইল আমদানির জন্য পিএইচপি ক্যোয়ারী

$query = <<<EOF
            LOAD DATA LOCAL INFILE '$file'
             INTO TABLE users
             FIELDS TERMINATED BY ','
             LINES TERMINATED BY '\n'
             IGNORE 1 LINES
            (name,mobile,email)
    EOF;
if (!$result = mysqli_query($this->db, $query))
   {
        exit(mysqli_error($this->db));
   }

** নমুনা সিএসভি ফাইল ডেটা **

name,mobile,email
Christopher Gritton,570-686-3439,ChristopherKGritton@inbound.plus
Brandon Wilson,541-309-5149,BrandonMWilson@inbound.plus
Craig White,516-795-8065,CraigJWhite@inbound.plus
David Whitney,713-214-3966,DavidCWhitney@inbound.plus

0

সার্ভারনেম, ব্যবহারকারীর নাম, পাসওয়ার্ড, ডিবি নাম, আপনার ফাইলের পথ, টেবিলের নাম এবং আপনার ডাটাবেসে যে ক্ষেত্রটি sertোকাতে চান তা পরিবর্তন করুন

<?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "bd_dashboard";
    //For create connection
    $conn = new mysqli($servername, $username, $password, $dbname);

    $query = "LOAD DATA LOCAL INFILE 
                'C:/Users/lenovo/Desktop/my_data.csv'
                INTO TABLE test_tab
                FIELDS TERMINATED BY ','
                LINES TERMINATED BY '\n'
                IGNORE 1 LINES
                (name,mob)";
    if (!$result = mysqli_query($conn, $query)){
        echo '<script>alert("Oops... Some Error occured.");</script>';
        exit();
            //exit(mysqli_error());
       }else{
        echo '<script>alert("Data Inserted Successfully.");</script>'
       }
    ?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.