Mysql
 sql >> база данни >  >> RDS >> Mysql

мога ли да използвам променлива, за да посоча OUTFILE в mysql

Редактиране: Записване на данни (напр. таблица) във файл без използване на променлива (само константни стойности)

-- folder_path could could be like => c:/users/sami
-- choose the directory/folder already available in system
-- and make sure you have access to write the file there

SELECT * INTO OUTFILE 'folder_path/filename.csv'
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
FROM database.tableName;

Сега използвате променлива

Всеки път, когато трябва да използвате име на променлива в sql, имате нужда от динамичен sql (което е приложимо само в съхранените процедури, нито в проста sql заявка, нито в тригери или функции)

SET @OutputPath := 'Users/jo/Documents'; //or any folder_path
SET @fullOutputPath := CONCAT(@OutputPath,'/','filename.csv');
SET @fullOutputPath2 := CONCAT(@OutputPath,'/','filename2.csv');

set @q1 := concat("SELECT * INTO OUTFILE ",@fullOutputPath,
" FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '\"'
FROM database.tableName");

set @q2 := concat("SELECT * INTO OUTFILE ",@fullOutputPath2,
" FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '\"'
FROM database.tableName2");

prepare s1 from @q1;
execute s1;deallocate prepare s1;

prepare s1 from @q2;
execute s1;deallocate prepare s1;

Тъй като имахте и двете ' и " във вашата заявка вече, така че свързах заявката ви с помощта на " и използва \, за да избяга от оригиналния ви " за да се гарантира използването му като буквален символ и не се използва за конкатенация

Току-що казах използването на variable в sql. Първо трябва да се уверите, че вашата заявка работи като пример в горната част (без използване на променлива)

Заключение: Ако вашата заявка по-горе работи добре, тогава казаният от мен динамичен sql ще работи също така, като се има предвид, че го използвате в някаква съхранена процедура.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на празен ред за повтарящ се ред

  2. производителност на броене на mysql

  3. Премахване на HTML тагове от записа

  4. SQL - код на грешка 1005 с номер на грешка 121

  5. Mysql външен ключ чрез неуникален ключ - как е възможно това?