নির্বাচন করে বাইরে নির্বাচন করার সময় শিরোনাম অন্তর্ভুক্ত করবেন?


117

মাইএসকিউএল ব্যবহার করার পরে কি কোনওভাবে শিরোনাম অন্তর্ভুক্ত করা সম্ভব? INTO OUTFILE ?

উত্তর:


166

আপনাকে সেই হেডারগুলিকে নিজেরাই হার্ড কোড করতে হবে। কিছুটা এইরকম:

SELECT 'ColName1', 'ColName2', 'ColName3'
UNION ALL
SELECT ColName1, ColName2, ColName3
    FROM YourTable
    INTO OUTFILE '/path/outfile'

14
কিন্তু এটা যদি একজন কাজ করবে না ORDER BYSELECTদফা। অর্ডার অনুসারে শিরোনাম লাইন উত্পন্ন ফাইলের যে কোনও জায়গায় থাকতে পারে anywhere
কয়েল

অর্ডার বাই ব্যবহার করার বিষয়ে ধারণাগুলির জন্য নীচে কয়েকটি উত্তর দেখুন এবং দ্রুত সমস্ত কলনেম 1, কলনাম 2, ইত্যাদি পাওয়ার একটি উপায়ের জন্য ম্যাট এর উত্তর দেখুন এই দুর্দান্ত উত্তরের জন্য খুব দরকারী অ্যাড-অনস!
অ্যান্ড্রু টি

1
এই উত্তরটি সঠিক সম্পর্কে বলে মনে হচ্ছে, জাহান্নাম আমি এমনকি এটি আমার ডেভ সার্ভারে প্রায় অন্ধভাবে ব্যবহার করেছি ... কলাম শিরোনাম ছাড়া 240 মিলিয়ন লাইন ডাম্প করতে প্রায় 50 সেকেন্ড সময় লাগে। এই ইউনিয়ন সমস্তর সাথে, সার্ভারটি সবকিছু ফেলে দেওয়ার আগে অস্থায়ী টেবিল করার চেষ্টা করে বড় সমস্যায় পড়েছে, এটি এখন 10 মিনিটেরও বেশি হয়ে গেছে এবং এখনও অস্থায়ী টেবিলটি ডিস্কে লেখার জন্য অপেক্ষা করছে! সচেতন হন! আপনি অবশ্যই কলামের নামগুলি অন্য কোনওভাবে যুক্ত করতে পছন্দ করবেন, যদিও এর অর্থ অন্য প্রোগ্রামিং ভাষার সাথে ফাইলটি খোলার পরেও।
সালকেটার

এটি কেবল তখনই কার্যকর হবে যদি আপনার টেবিলের সমস্ত কলাম ক্যারেক্টার ডেটা টাইপ হয়, যা বোঝা যায় না। অন্যথায় আপনি অহেতুক ত্রুটি পান: "ব্যবহৃত SELECT স্টেটমেন্টগুলির কলামগুলির একটি পৃথক সংখ্যা রয়েছে"।
TheBamf

1
আমি অন্য একটি ডিবিএমএসে স্যুইচ করার বিষয়টি বিবেচনা করার কারণগুলির একটি।
e18r

85

জো স্টেনিলি প্রদত্ত সমাধানটি কাজ করে, তবে কয়েক ডজন বা শত শত কলাম জড়িত থাকলে কলামগুলির একটি তালিকা তৈরি করা অসুবিধে হয়। এখানে কিভাবে টেবিলের কলাম তালিকা পেতে এর my_table মধ্যে my_schema

-- override GROUP_CONCAT limit of 1024 characters to avoid a truncated result
set session group_concat_max_len = 1000000;

select GROUP_CONCAT(CONCAT("'",COLUMN_NAME,"'"))
from INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'my_table'
AND TABLE_SCHEMA = 'my_schema'
order BY ORDINAL_POSITION

এখন আপনি জো এর পদ্ধতিতে প্রথম বিবৃতি হিসাবে ফলাফলের সারিটি অনুলিপি করে আটকে দিতে পারেন।


2
এটি একক ক্ষেত্রে সমস্ত কলাম একসাথে জড়িত করে। আমি একত্রিত করতে পারিনি যে আরও একটি নির্বাচনী বিবৃতি যা একাধিক ক্ষেত্র ফেরত দেয়। যদিও আমি আমার আউটফিলের শিরোনাম হিসাবে অনুলিপি করতে পারি এবং একটি লাইন পাওয়ার জন্য এটি সত্যিই দরকারী।
tmoore82

1
ধারণাটি হ'ল ফলস্বরূপ একক ক্ষেত্রটি অনুলিপি করুন এবং জো-এর পদ্ধতিটি (স্বীকৃত উত্তর) ব্যবহার করার সময় কলাম 1, কলাম 2 ইত্যাদিতে ম্যানুয়ালি টাইপ না করে আপনার ইউনিয়ন বিবৃতিতে আটকান যাতে আপনি কলামগুলির তালিকাটি দ্রুত পেতে পারেন!
অ্যান্ড্রু টি

আমি আমার সমস্ত টেবিল / ক্ষেত্রের স্কিমা রফতানি করতে চাইছিলাম। এই উত্তরটি সম্মিলিত এক সাথে কৌতুক করেছে!
Rémi ব্রেটন

@ ক্রিস ORDER BY ORDINAL_POSITIONহ্যান্ডেল করে
ম্যাট

1
অর্ডার বা অর্ডিনালপোসিটিউশনটি গ্রো_কনক্যাট () কলটির অংশ হওয়া উচিত, যেমনটি রয়েছেGROUP_CONCAT(CONCAT('"',COLUMN_NAME,'"') order BY ORDINAL_POSITION)
আপুলিয়াস

15

জটিল বাছাইয়ের জন্য অর্ডার দিয়ে আমি নিম্নলিখিতটি ব্যবহার করি:

SELECT * FROM (
    SELECT 'Column name #1', 'Column name #2', 'Column name ##'
    UNION ALL
    (
        // complex SELECT statement with WHERE, ORDER BY, GROUP BY etc.
    )
) resulting_set
INTO OUTFILE '/path/to/file';

দ্বিতীয় (জটিল) ক্যোয়ারী অর্ডার করার সময় এই সমাধানটি ভাল কাজ করে; আপনি যদি এভাবে না করেন তবে আপনি প্রথম কলামটিও অর্ডার করবেন যা অনাকাঙ্ক্ষিত। ভাল পরামর্শ @ ইভিলগুক!
অ্যারন

আমার সাথে কাজ করেনি, ইউনিয়ন সব করার পরে আইডি কলামের
ক্রমটি গণ্ডগোল

6

আপনি লুসেকের উত্তরের সাথে প্রস্তুত বিবৃতিটি ব্যবহার করতে পারেন এবং সিএসভিতে কলামের নাম সহ গতিশীল টেবিলে রফতানি করতে পারেন:

--If your table has too many columns
SET GLOBAL group_concat_max_len = 100000000;
--Prepared statement
SET @SQL = ( select CONCAT('SELECT * INTO OUTFILE \'YOUR_PATH\' FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\' ESCAPED BY \'\' LINES TERMINATED BY \'\\n\' FROM (SELECT ', GROUP_CONCAT(CONCAT("'",COLUMN_NAME,"'")),' UNION select * from YOUR_TABLE) as tmp') from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'YOUR_TABLE' AND TABLE_SCHEMA = 'YOUR_SCHEMA' order BY ORDINAL_POSITION );
--Execute it
PREPARE stmt FROM @SQL;
EXECUTE stmt;

লুসিকে ধন্যবাদ


6

এটি আপনাকে অর্ডারকৃত কলাম এবং / অথবা একটি সীমা দিতে অনুমতি দেবে

SELECT 'ColName1', 'ColName2', 'ColName3'
UNION ALL
SELECT * from (SELECT ColName1, ColName2, ColName3
    FROM YourTable order by ColName1 limit 3) a
    INTO OUTFILE '/path/outfile';

1
এই কোয়েরি লেআউটটি আমার জন্য মারিয়াডিবি 10.1-তেও কাজ করেছে কেবল একটি নোট; এই থ্রেডে প্রস্তাবিত অন্যান্য বিন্যাসগুলি তা করেনি।
প্রোগ্রামারডান

কোনও কারণে নীচে শিরোনামটি পপ করে, তবে একটি স্প্রেডশিট অ্যাপ্লিকেশনটিতে শীর্ষে পপ করতে দুর্দান্ত কাজ করে, অদ্ভুত তবে চিয়ার্স
দিমিত্রি ডিবি

আমি মারিয়াডিবি ব্যবহার করেও আটকে আছি। মাত্র 100 লিডের নিষ্কাশন সহ, এটি গৃহীত উত্তর চালানোর চেয়ে 14 সেকেন্ডেরও বেশি দ্রুত ছিল। গৃহীত প্রথম পাস: Query OK, 100 rows affected (14.72 sec) আপনার সাথে দ্বিতীয় পাসQuery OK, 101 rows affected (0.00 sec)
ক্যাস্পার উইলকস

6

আমি কেবল 2 টি ক্যোরি তৈরি করি, প্রথমে কলামের নামগুলির সাথে কোয়েরি আউটপুট (সীমা 1) পেতে (কোনও হার্ডকোড নেই, যোগদানের সাথে কোনও সমস্যা নেই, অর্ডার করুন, কাস্টম কলামের নামগুলি ইত্যাদি) এবং দ্বিতীয়টি নিজেই তৈরি করতে এবং ফাইলগুলিকে একটি সিএসভিতে একত্রিত করুন ফাইল:

CSVHEAD=`/usr/bin/mysql $CONNECTION_STRING -e "$QUERY limit 1;"|head -n1|xargs|sed -e "s/ /'\;'/g"`
echo "\'$CSVHEAD\'" > $TMP/head.txt
/usr/bin/mysql $CONNECTION_STRING -e "$QUERY into outfile '${TMP}/data.txt' fields terminated by ';' optionally enclosed by '\"' escaped by '' lines terminated by '\r\n';"
cat $TMP/head.txt $TMP/data.txt > $TMP/data.csv

5

নোডজেএস-এ বড় টেবিলগুলিতে মাইএসকিএল কোয়েরি চালানোর সময় আমি একই সমস্যার মুখোমুখি হয়েছি। আমার সিএসভি ফাইলে শিরোনাম অন্তর্ভুক্ত করার জন্য আমি যে পদ্ধতি অনুসরণ করেছি

  1. শিরোনাম ছাড়াই ফাইল প্রস্তুত করতে আউটফিল ক্যোরি ব্যবহার করুন

        SELECT * INTO OUTFILE [FILE_NAME] FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED 
        BY '\"' LINES TERMINATED BY '\n' FROM [TABLE_NAME]
  2. পয়েন্ট 1 এ ব্যবহৃত টেবিলের জন্য কলামের শিরোনাম আনুন

        select GROUP_CONCAT(CONCAT(\"\",COLUMN_NAME,\"\")) as col_names from 
        INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = [TABLE_NAME] AND TABLE_SCHEMA 
        = [DATABASE_NAME] ORDER BY ORDINAL_POSITION
  3. প্রিপেন্ড -ফাইল এনপিএম প্যাকেজ ব্যবহার করে পদক্ষেপ 1 -এ তৈরি করা ফাইলটিতে কলাম শিরোনাম যুক্ত করুন

নোডজেএস-এ প্রতিশ্রুতি ব্যবহার করে প্রতিটি পদক্ষেপের সম্পাদন নিয়ন্ত্রণ করা হয়েছিল।


3

যদি আপনি পাইথন বা আর এর সাথে পরিচিত হন এবং আপনার টেবিলটি স্মৃতিতে ফিট করতে পারে তবে এটি বিকল্প চিট।

পাইথন বা আর-তে এসকিউএল টেবিলটি আমদানি করুন এবং সেখান থেকে সিএসভি হিসাবে রফতানি করুন এবং আপনি কলামের নাম এবং পাশাপাশি ডেটা পাবেন।

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

db <- dbConnect(MySQL(), user='user', password='password', dbname='myschema', host='localhost')

query <- dbSendQuery(db, "select * from mytable")
dataset <- fetch(query, n=-1)

write.csv(dataset, 'mytable_backup.csv')

এটি কিছুটা প্রতারণা হলেও আমি দেখতে পেলাম যে আমার কলামগুলির সংখ্যাটি উপরের কনক্যাট পদ্ধতিটি ব্যবহার করার জন্য খুব দীর্ঘ ছিল। দ্রষ্টব্য: আর সিএসভির শুরুতে একটি 'সারি.নাম' কলাম যুক্ত করবে সুতরাং আপনি যদি টেবিলটি পুনরায় তৈরি করতে CSV এর উপর নির্ভর করতে চান তবে আপনি এটি ফেলে দিতে চাইবেন।


2

সুতরাং, যদি সমস্ত কলামগুলিতে my_tableএকটি চরিত্রের ডেটা টাইপ থাকে তবে আমরা শীর্ষের উত্তরগুলি (জো, ম্যাট এবং ব্রিজগুক দ্বারা) একসাথে একত্রিত করতে পারি, যাতে একটি 'সরল' এসকিউএল কোয়েরিতে স্বয়ংক্রিয়ভাবে শিরোনাম যুক্ত হয় eg

select * from (
  (select column_name
    from information_schema.columns
    where table_name = 'my_table'
    and table_schema = 'my_schema'
    order by ordinal_position)
  union all
  (select *  // potentially complex SELECT statement with WHERE, ORDER BY, GROUP BY etc.
  from my_table)) as tbl
into outfile '/path/outfile'
fields terminated by ',' optionally enclosed by '"' escaped by '\\'
lines terminated by '\n';

যেখানে লাইনগুলির শেষ দু'টি সিএসভি আউটপুট তৈরি করে।

মনে রাখবেন যে my_tableখুব বড় হলে এটি ধীর হতে পারে ।


এটিতে "ব্যবহৃত SELECT স্টেটমেন্টগুলির একটি পৃথক সংখ্যক কলাম রয়েছে" ত্রুটি রয়েছে। স্যার
বোয়াই লিউ

1

আমি মনে করি আপনি যদি ইউনিয়ন ব্যবহার করেন তবে এটি কার্যকর হবে:

select 'header 1', 'header 2', ...
union
select col1, col2, ... from ...

আমি সরাসরি INTO OUTFILE বাক্য গঠন দিয়ে শিরোনাম নির্দিষ্ট করার কোনও উপায় জানি না।


1
ইউনিয়ন সমস্ত নিরাপদ এবং দ্রুত হবে।
toxalot

1

আসলে আপনি এটি কোনও অর্ডার দিয়েও কাজ করতে পারবেন।

বিবৃতি অনুসারে ক্রমে কেবল কিছু কৌশল দরকার - আমরা কেস স্টেটমেন্ট ব্যবহার করি এবং তালিকার প্রথমে বাছাইয়ের গ্যারান্টিযুক্ত অন্য কোনও মানের সাথে শিরোনাম মানটি প্রতিস্থাপন করি (স্পষ্টত এটি ক্ষেত্রের ধরণের উপর নির্ভরশীল এবং আপনি ASC বাছাই করছেন কিনা) DESC)

ধরা যাক আপনার তিনটি ক্ষেত্র রয়েছে, নাম (বর্ণ), is_active (bool), তারিখ_সামান্য_হ্যাপেন্স (তারিখ), এবং আপনি দ্বিতীয় দুটি উতরাই সাজতে চান:

select 
        'name'
      , 'is_active' as is_active
      , date_something_happens as 'date_something_happens'

 union all

 select name, is_active, date_something_happens

 from
    my_table

 order by
     (case is_active when 'is_active' then 0 else is_active end) desc
   , (case date when 'date' then '9999-12-30' else date end) desc

1

যেহেতু 'অন্তর্ভুক্ত-শিরোনামগুলি' কার্যকারিতাটি এখনও বিল্ট-ইন বলে মনে হচ্ছে না এবং বেশিরভাগ "সমাধান" এখানে কলামগুলির নাম নিজে হাতে টাইপ করতে হবে, এবং / অথবা এমনকি অ্যাকাউন্টগুলিতে যোগদানও করবে না, তাই আমি পুনরায় পুনরায় জিজ্ঞাসা করব সমস্যা প্রায় পেতে

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

  • একই ধারণায়, ব্যবহারকারীর 3037511 এর পদ্ধতির কাজ করে এবং সহজেই স্বয়ংক্রিয়ভাবে তৈরি করা যায় । আপনার শিরোনামগুলি পাওয়ার জন্য
    কিছু অনুরোধ লাইন দিয়ে আপনার অনুরোধটি চালু করুন । আপনি কোনও সেল্ট আউটফিলের মাধ্যমে ডেটা পেতে পারেন ... বা সীমা ছাড়াই আপনার জিজ্ঞাসাটি চালিয়ে বেছে নিতে পারেন।

    নোট করুন যে কোনও ফাইলে আউটপুট পুনর্নির্দেশ লিনাক্স এবং উইন্ডোজ উভয়ই মনোযোগের মতো কাজ করে।


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

তাই, আমি ঠিক অপ এর উত্তর দেবেন না প্রশ্ন ... কিন্তু এটা তার উত্তর দিতে হবে চাহিদা :)
সম্পাদনা করুন: এবং আসলে তার প্রশ্নের উত্তর দিতে: কোন
2017-09-07 হিসাবে, আপনি শুধু হেডার অন্তর্ভুক্ত থাকতে পারে না যদি আপনি আউটফিল কমান্ড নির্বাচন করুন
: |


1

কলাম সহ আমার ডাটাবেস টেবিলের নাম সেন্সর থেকে একটি উদাহরণ (আইডি, সময়, ইউনিট)

select ('id') as id, ('time') as time, ('unit') as unit
UNION ALL
SELECT * INTO OUTFILE 'C:/Users/User/Downloads/data.csv'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM sensor

0

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

//first I connected to the information_scheme DB

$headercon=mysqli_connect("localhost", "USERNAME", "PASSWORD", "information_schema");

//took the healders out in a string (I could not get the concat function to work, so I wrote a loop for it)

    $headers = '';
    $sql = "SELECT column_name AS columns FROM `COLUMNS` WHERE table_schema = 'YOUR_DB_NAME' AND table_name = 'YOUR_TABLE_NAME'";
    $result = $headercon->query($sql);
    while($row = $result->fetch_row())
    {
        $headers = $headers . "'" . $row[0] . "', ";
    }
$headers = substr("$headers", 0, -2);

// connect to the DB of interest

$con=mysqli_connect("localhost", "USERNAME", "PASSWORD", "YOUR_DB_NAME");

// export the results to csv
$sql4 = "SELECT $headers UNION SELECT * FROM YOUR_TABLE_NAME WHERE ... INTO OUTFILE '/output.csv' FIELDS TERMINATED BY ','";
$result4 = $con->query($sql4);

0

গতিশীলভাবে কলামের নামগুলি থেকে শিরোনামের শিরোনাম পাওয়ার উপায় এখানে is

/* Change table_name and database_name */
SET @table_name = 'table_name';
SET @table_schema = 'database_name';
SET @default_group_concat_max_len = (SELECT @@group_concat_max_len);

/* Sets Group Concat Max Limit larger for tables with a lot of columns */
SET SESSION group_concat_max_len = 1000000;

SET @col_names = (
  SELECT GROUP_CONCAT(QUOTE(`column_name`)) AS columns
  FROM information_schema.columns
  WHERE table_schema = @table_schema
  AND table_name = @table_name);

SET @cols = CONCAT('(SELECT ', @col_names, ')');

SET @query = CONCAT('(SELECT * FROM ', @table_schema, '.', @table_name,
  ' INTO OUTFILE \'/tmp/your_csv_file.csv\'
  FIELDS ENCLOSED BY \'\\\'\' TERMINATED BY \'\t\' ESCAPED BY \'\'
  LINES TERMINATED BY \'\n\')');

/* Concatenates column names to query */
SET @sql = CONCAT(@cols, ' UNION ALL ', @query);

/* Resets Group Contact Max Limit back to original value */
SET SESSION group_concat_max_len = @default_group_concat_max_len;

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

1
বেশ সমাধান আমি বলতে হবে। আমার উদ্দেশ্যে এটি গ্রহণ। ধন্যবাদ!
ডেনিস কুলাগিন

0

আমি সংগাম বেলোসের দেওয়া উত্তরটিতে যুক্ত করতে চাই। এখানে তার কোড:

select ('id') as id, ('time') as time, ('unit') as unit
UNION ALL
SELECT * INTO OUTFILE 'C:/Users/User/Downloads/data.csv'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM sensor

তবে আপনি যদি "secure_file_priv"ভেরিয়েবলের মধ্যে সেট আপ না করে থাকেন তবে এটি কাজ নাও করতে পারে। তার জন্য, এই ভেরিয়েবলের ফোল্ডার সেটটি এতে পরীক্ষা করুন:

SHOW VARIABLES LIKE "secure_file_priv"

আউটপুটটি দেখতে এইরকম হওয়া উচিত:

mysql> show variables like "%secure_file_priv%";
+------------------+------------------------------------------------+
| Variable_name    | Value                                          |
+------------------+------------------------------------------------+
| secure_file_priv | C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\ |
+------------------+------------------------------------------------+
1 row in set, 1 warning (0.00 sec)

আপনি হয় এই ভেরিয়েবল পরিবর্তন করতে পারেন বা কোয়েরিটি ফাইলটিকে আউটপুট থেকে ডিফল্ট পাথ প্রদর্শিত করতে পারেন change


0

একা মাইএসকিউএল সহজভাবে এটি করার জন্য যথেষ্ট নয়। নীচে একটি পিএইচপি স্ক্রিপ্ট রয়েছে যা কলাম এবং ডেটা সিএসভিতে আউটপুট দেবে।

উপরে আপনার ডাটাবেসের নাম এবং সারণী লিখুন।

<?php

set_time_limit( 24192000 );
ini_set( 'memory_limit', '-1' );
setlocale( LC_CTYPE, 'en_US.UTF-8' );
mb_regex_encoding( 'UTF-8' );

$dbn = 'DB_NAME';
$tbls = array(
'TABLE1',
'TABLE2',
'TABLE3'
);

$db = new PDO( 'mysql:host=localhost;dbname=' . $dbn . ';charset=UTF8', 'root', 'pass' );

foreach( $tbls as $tbl )
{
    echo $tbl . "\n";
    $path = '/var/lib/mysql/' . $tbl . '.csv';

    $colStr = '';
    $cols = $db->query( 'SELECT COLUMN_NAME AS `column` FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = "' . $tbl . '" AND TABLE_SCHEMA = "' . $dbn . '"' )->fetchAll( PDO::FETCH_COLUMN );
    foreach( $cols as $col )
    {
        if( $colStr ) $colStr .= ', ';
        $colStr .= '"' . $col . '"';
    }

    $db->query(
    'SELECT *
    FROM
    (
        SELECT ' . $colStr . '
        UNION ALL
        SELECT * FROM ' . $tbl . '
    ) AS sub
    INTO OUTFILE "' . $path . '"
    FIELDS TERMINATED BY ","
    ENCLOSED BY "\""
    LINES TERMINATED BY "\n"'
    );

    exec( 'gzip ' . $path );

    print_r( $db->errorInfo() );
}

?>

আপনি যে ডিরেক্টরিতে আউটপুট করতে চান সেটি হতে হবে এটি আপনার দরকার। মাইএসকিউএল ডিরেক্টরিতে লেখার ক্ষমতা থাকা দরকার।

$path = '/var/lib/mysql/' . $tbl . '.csv';

আপনি ক্যোয়ারিতে সিএসভি রফতানি বিকল্পগুলি সম্পাদনা করতে পারেন:

INTO OUTFILE "' . $path . '"
FIELDS TERMINATED BY ","
ENCLOSED BY "\""
LINES TERMINATED BY "\n"'

শেষে জিজেপ সিএসভিতে একটি এক্সিকিউট কল রয়েছে।


-1
'ColName1', 'ColName2', 'ColName3' নির্বাচন করুন
ইউনিয়ন সব
ColName1, ColName2, ColName3 নির্বাচন করুন
    আপনার টেবিল থেকে
    স্বতঃপদ্ধতিতে সি: \\ ডেটাশীট.সিএসভি 'ফিয়ার্ডস টার্মিনেটেড বাই', 'ইপলিটলি বাই এনক্রোজড বাই' '' 'লাইন দ্বারা নিয়ন্ত্রিত' \ n ' 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.