লুড ডেটা ইনফিল ব্যবহার করে সিএসভি থেকে এমওয়াইএসকিউএল ডেটা আমদানি করে


106

আমি সিএসভি ফাইল থেকে 20000 সারিগুলির কিছু ডেটা মাইএসকিএলে আমদানি করছি।

সিএসভিতে কলামগুলি মাইএসকিউএল টেবিলের কলামগুলির চেয়ে পৃথক ক্রমে রয়েছে। মাইএসকিএল টেবিল কলামগুলির সাথে সম্পর্কিত কলামগুলি স্বয়ংক্রিয়ভাবে কীভাবে বরাদ্দ করবেন?

যখন আমি মৃত্যুদণ্ড কার্যকর করি

LOAD DATA INFILE'abc.csv' INTO TABLE abc

এই ক্যোয়ারীটি প্রথম কলামে সমস্ত ডেটা যুক্ত করে।

মাইএসকিএল-তে ডেটা আমদানির জন্য দয়া করে অটো সিনট্যাক্সের পরামর্শ দিন।


সেখানে অনুরূপ বিষয় stackoverflow.com/questions/11077801/import-csv-to-mysql-table/...
marciomolusco

আমার সাথে এটি ঘটেছিল, আমি জানতে পেরেছি যে টেক্সট ফাইলটি '\ r' দ্বারা সমাপ্ত লাইনগুলি দিয়ে লেখা হয়েছিল এবং আমি '\ n' ব্যবহার করে লাইনগুলি সমাপ্ত হওয়ার প্রত্যাশায় ডেটা আমদানির চেষ্টা করছিলাম
তামের

2
আমি এক্সেলের একটি সিনট্যাক্স জেনারেটর সরঞ্জাম সহ মাইএসকিএল-তে সিএসভি ডেটা লোড করার জন্য বিস্তৃত টিউটোরিয়াল লিখেছিলাম । এটি পাঠকদের জন্য উপকারী হওয়া উচিত।
mysql_user

উত্তর:


169

আপনি ব্যবহার করতে পারেন লোড ডেটা infile আমদানি করতে কমান্ড CSV টেবিলের মধ্যে ফাইল।

এই লিঙ্কে চেক লোড ডেটা infile - মাইএসকিউএল

LOAD DATA LOCAL INFILE 'abc.csv' INTO TABLE abc
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(col1, col2, col3, col4, col5...);

মাইএসকিউএল ৮.০ ব্যবহারকারীদের জন্য:

ব্যবহার LOCALশব্দ হোল্ড নিরাপত্তা ঝুঁকি ও মাইএসকিউএল 8.0 হিসাবে LOCALসামর্থ্য সেট করা হয় Falseডিফল্টরূপে। আপনি ত্রুটি দেখতে পাবেন:

ত্রুটি 1148: ব্যবহৃত এই আদেশটি এই মাইএসকিউএল সংস্করণ সহ অনুমোদিত নয়

আপনি ডক্সের নির্দেশাবলী অনুসরণ করে এটি ওভাররাইট করতে পারেন । সাবধান থাকুন যে এ জাতীয় ওভাররাইট সুরক্ষা সমস্যাটি সমাধান করে না বরং কেবল একটি স্বীকৃতি দিয়েছে যে আপনি সচেতন এবং ঝুঁকি নিতে ইচ্ছুক।


1
আমি কি IGNORE 1 LINESএখানে জানতে পারি ? আগাম ধন্যবাদ.
কাউশিক দাস

5
@ কোশিকদাস এটি প্রথম পংক্তিকে উপেক্ষা করবে যা কলামের নামগুলি সংজ্ঞায়িত করেছে
সহার্শ শাহ ২

28
সাবধানতা: '\ r \ n' ধারা অনুসারে লাইনগুলি নিয়ন্ত্রিত উইন্ডোজ ফাইলগুলির জন্য কাজ করে তবে লিনাক্স ফাইলগুলিতে কেবল '\ n' থাকতে হবে।
চককট্রিল

1
ফরোয়ার্ড স্ল্যাশগুলি ব্যবহার করে মনে রাখার জন্য গুরুত্বপূর্ণ: stackoverflow.com/a/42878067/470749
রায়ান

3
কেবলমাত্র একটি নোট (কল 1, কল 2, কল 3 ....) প্রয়োজন নেই। ডেটা sertোকানোর জন্য আপনি যদি ফ্লাইতে কোনও টেবিল তৈরি করে থাকেন তবে দরকারী।
কাইরান কুইন

51

FIELDS TERMINATED BY ','ডিলিমিটারটি হতে পারে আপনার সম্ভবত সেট করা দরকার।

কোনও সিএসভি ফাইলের জন্য আপনার বক্তব্যটি দেখতে এমন হওয়া উচিত:

LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

1
লোড ডেটা স্থানীয় ইনফিল ... লোকাল ছাড়া এটি অ্যাক্সেস অস্বীকার করা হয়েছিল।
কেট্যাঙ্ক

49

ফাইলটি আমদানি করার আগে আপনাকে অবশ্যই নিম্নলিখিত প্রস্তুত করতে হবে:

  • একটি ডাটাবেস টেবিল যা ফাইল থেকে ডেটা আমদানি করা হবে।
  • টেবিলের কলামগুলির সংখ্যার সাথে এবং প্রতিটি কলামে ডেটার ধরণের সাথে মেলে এমন ডেটা সহ একটি সিএসভি ফাইল।
  • মাইএসকিউএল ডাটাবেস সার্ভারের সাথে সংযোগকারী অ্যাকাউন্টটিতে ফাইল এবং INSERT সুবিধা রয়েছে।

ধরা যাক আমাদের নিম্নলিখিত সারণী রয়েছে:

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

অনুসরণ ব্যবহারের টেবিল তৈরি করুন QUERY:

CREATE TABLE IF NOT EXISTS `survey` (
  `projectId` bigint(20) NOT NULL,
  `surveyId` bigint(20) NOT NULL,
  `views` bigint(20) NOT NULL,
  `dateTime` datetime NOT NULL
);

আপনার সিএসভি ফাইলটি সংযুক্ত চিত্র অনুসরণ করার উদাহরণ হিসাবে উদাহরণস্বরূপ বিন্যাস করা উচিত:

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

যদি প্রতিটি জিনিস ঠিক থাকে .. দয়া করে সিএসভি ফাইল থেকে লোড ডেটাতে নিম্নলিখিত কোয়েরিটি সম্পাদন করুন:

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

LOAD DATA INFILE '/var/www/csv/data.csv' 
INTO TABLE survey 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

যদি সব কিছু করে ফেলেছে। আপনি সিএসভি থেকে টেবিলে সাফল্যের সাথে রফতানি করেছেন


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

2
এইরকম একটি পুরানো উত্তরে বিরক্ত হওয়ার জন্য দুঃখিত Sorry এটি খুব দৃinc় বিশ্বাসযোগ্য তবে আমি কীভাবে কিছু ক্ষেত্র এড়িয়ে যেতে পারি। আসুন আমি বলি যে আমার টেবিলটিতে প্রকল্পআইডি, জরিপআইডি এবং তারিখের সময় রয়েছে, আমি কীভাবে "দর্শন" ফিল্ডটি এড়িয়ে যেতে পারি?
ড্যানিশ আনসারী

@ এমডি ড্যানিশ আনসারী, একটি পুরানো প্রশ্নের উত্তরে দুঃখিত, তবে আপনি সারণী কলামগুলি নির্দিষ্ট করতে পারেন। আমি নিম্নলিখিতগুলি করেছি, যেখানে আমাকে প্রথম ক্ষেত্রটি (একটি স্ব-স্বীকৃতি প্রাথমিক কী), পাশাপাশি আরও কয়েকটি ক্ষেত্র এড়ানো দরকার: লড ডেটা লোকাল ইনফিল 'সি: am xampp pp htdocs \\ ডেটা_ফায়ালস \\ 2018-10_সংখ্যা csv 'INTO TABLE my_log_tbl FIELDS TERMINATED BY', 'ENLOSED BY' "দ্বারা" লাইনগুলি নিয়ন্ত্রিত "\ r \ n '(ইউজারআইডি, গ্রাহক আইডি, ইনস্টিটিউশন, অ্যাপ্লিকেশন, ফুলআরএল, অ্যাক্সেসটাইমস্ট্যাম্প, আইপ্যাড্রেসিস) আসার পরে আমার এই কলামগুলি ভাবতে হবে টেবিলের নাম, তবে এটি কার্যকর হয়নি They তাদের শেষের দিকে উপস্থিত হওয়া উচিত
কালিনমা

17

বাক্য গঠন:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE 'file_name' INTO TABLE `tbl_name`
CHARACTER SET [CHARACTER SET charset_name]
FIELDS [{FIELDS | COLUMNS}[TERMINATED BY 'string']] 
[LINES[TERMINATED BY 'string']] 
[IGNORE number {LINES | ROWS}]

এই উদাহরণটি দেখুন:

LOAD DATA LOCAL INFILE
'E:\\wamp\\tmp\\customer.csv' INTO TABLE `customer`
CHARACTER SET 'utf8'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

10

ডাটাবেসে 1 মিনিটের মধ্যে 7000000 এর বেশি সংখ্যক রেকর্ড সন্নিবেশ করান (গণনার সাথে সুপারফেস ক্যোয়ারী)

mysqli_query($cons, '
    LOAD DATA LOCAL INFILE "'.$file.'"
    INTO TABLE tablename
    FIELDS TERMINATED by \',\'
    LINES TERMINATED BY \'\n\'
    IGNORE 1 LINES
    (isbn10,isbn13,price,discount,free_stock,report,report_date)
     SET RRP = IF(discount = 0.00,price-price * 45/100,IF(discount = 0.01,price,IF(discount != 0.00,price-price * discount/100,@RRP))),
         RRP_nl = RRP * 1.44 + 8,
         RRP_bl = RRP * 1.44 + 8,
         ID = NULL
    ');
$affected = (int) (mysqli_affected_rows($cons))-1; 
$log->lwrite('Inventory.CSV to database:'. $affected.' record inserted successfully.');

আরআরপি এবং আরআরপি_এনএল এবং আরআরপি_বিএল সিএসভিতে নেই তবে আমাদের এটি গণনা করা হয় এবং এটি afterোকানোর পরে।


2

আপনি যদি LOAD DATA LOCAL INFILEউইন্ডোজ শেল থেকে ছুটে চলেছেন এবং আপনাকে ব্যবহার OPTIONALLY ENCLOSED BY '"'করতে হবে তবে অক্ষরগুলি যথাযথভাবে বাঁচতে আপনাকে এই জাতীয় কিছু করতে হবে:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql" -u root --password=%password% -e "LOAD DATA LOCAL INFILE '!file!' INTO TABLE !table! FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"^""' LINES TERMINATED BY '\n' IGNORE 1 LINES" --verbose --show-warnings > mysql_!fname!.out

2

ধরা যাক আপনি xampp এবং phpmyadmin ব্যবহার করছেন min

আপনার ফাইলের নাম 'ratings.txt' টেবিলের নাম 'রেটিং' এবং ডাটাবেসের নাম 'চলচ্চিত্রগুলি' রয়েছে

যদি আপনার xampp "C: am xampp \" এ ইনস্টল করা থাকে

আপনার "রেটিং.টেক্সট" ফাইলটি "সি: am xampp \ mysql \ ডেটা \ চলচ্চিত্র" ফোল্ডারে অনুলিপি করুন

LOAD DATA INFILE 'ratings.txt' INTO TABLE ratings FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;

আশা করি আপনি যদি লোকাল হোস্টে এটি করে থাকেন তবে এটি আপনাকে আপনার ত্রুটি বাদ দিতে সহায়তা করতে পারে


0

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

table.sql

id //field 1

name //field2

table.txt

1,peter

2,daniel

...

- উইন্ডোতে উদাহরণ

LOAD DATA LOCAL INFILE 'C:\\directory_example\\table.txt'
INTO TABLE Table
CHARACTER SET UTF8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'; 

0

আমি ত্রুটি কোড পেয়েছিলাম: 1290. মাইএসকিউএল সার্ভারটি --secure-file-ખાનગીকরণ বিকল্পের সাথে চলছে তাই এটি এই বিবৃতিটি কার্যকর করতে পারে না

এটি আমার পক্ষে উইন্ডোজ 8.1 64 বিট ওয়্যাম্পসারভার 3.0.6 64 বিট ব্যবহার করে কাজ করেছিল।

সি থেকে .in wamp64 \ bin \ mysql \ mysql5.7.14 থেকে my.ini ফাইল সম্পাদনা করা হয়েছে

নিরাপদ_ফলে_প্রভিভ সি: \ wamp64 \ tmp \ (বা আপনার এখানে যা কিছু আছে) মুছে ফেলুন

সমস্ত কিছু বন্ধ করে দিয়েছিল - মোমবাঘা থেকে বেরিয়ে আসা ইত্যাদি- এবং সবকিছু পুনরায় আরম্ভ; তারপরে সিভিতে আমার সিভিএস ফাইলটি পুট করুন: \ wamp64 \ bin \ mysql \ mysql5.7.14 \ ডেটা \ u242349266_recur (শেষ dir আমার ডাটাবেসের নাম)

চালিত লোড ডেটা ইনফিল 'myfile.csv'

টেবিল প্রাক্তন ছাত্রদের মধ্যে

',' এর মাধ্যমে নিয়ন্ত্রিত ফিল্ডস

'' দ্বারা অন্তর্ভুক্ত

'\ R \ n' এর দ্বারা নিয়ন্ত্রিত লাইনগুলি

আইগনোর 1 লাইন

... এবং ভয়েলা !!!


0

আপনি এটি inোকানোর চেষ্টা করতে পারেন:

LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);

0

এই দিনগুলিতে (2019 এর সমাপ্তি) আমি http://www.convertcsv.com/csv-to-sql.htm এর মতো একটি সরঞ্জাম ব্যবহার করতে পছন্দ করি যখন আপনি সিএসভি আসবেন তখন ব্যবহারকারীর ভুলগুলি সংরক্ষণ করে পার্টিশনযুক্ত ব্লকগুলি চালাতে পারবেন আপনি প্রচুর সারি পেয়েছেন একটি চূড়ান্ত ব্যবহারকারী স্প্রেডশিট।

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