SQL Developer:
Method 1Add the comment
/*csv*/
to your SQL query and run the query as a script (using F5 or the 2nd execution button on the worksheet toolbar)That's it.
Method 2
Run a query
Right click and select unload.
Запись результатов sql-запроса в файл bash:
Как записать каждую запись результата sql-запроса в файл через пробел в bash'е? Как записать каждую запись результата sql-запроса в файл на отдельной строке в bash'е?\\ psql dbname -c 'select * from test1' > file.txt
Файловый вывод/ввод
Большинство программ, работающих с БД, позволяют сохранять выборки в различных форматах, но не все позволяют сохранить в виде простого текстового файла. Например, была ситуация, когда в БД была необходимая информация о сотрудниках (более тысячи человек) для одной стандартной формы. А формат файла, описывающий эту форму, оказался текстовым. Поэтому проблема решилась выборкой в файл и вставкой его содержимого в файл формы. А соответствующий отдел был избавлен от лишней работы. Для конкретности примера, воспользуемся следующей таблицей с данными.
-- таблица цветов
create table colors(
id integer,
cname varchar(45),
constraint pk_colors primary key (id)
);
insert into colors values(1,'красный');
insert into colors values(2,'синий');
insert into colors values(3,'зеленый');
insert into colors values(4,'белый');
insert into colors values(5,'черный');
commit;
Oracle
В Oracle вывод в файл реализуется с помощью команды SQL plus spool. Она служит как для начала вывода в файл, так и для остановки. По умолчанию расширение файла lst.
-- открываем вывод в файл
spool c:\\myfile;
-- выборка
select t.id || ' ' || t.cname from colors t;
-- закрываем вывод в файл
spool off;
Так как это не SQL команда, то ее нельзя использовать внутри PL/SQL блока,
но можно поместить блок между этими командами.
По этой же причине, чтобы выполнить этот пример в PL/SQL developer,
нужно открыть Command window.На некоторых операционных системах поддерживается дополнительный параметр out, позволяющий сразу распечатать выборку на принтере установленном по умолчанию.
-- открываем вывод в файл
spool c:\myfile;
-- выборка
select t.id || ' ' || t.cname from colors t;
-- закрываем вывод файл и распечатываем
spool out;
MySQL
В MySQL данная задача реализована аналогично сохранению выборки в списке переменных в команде select.
select *
into outfile 'c:/myfile.lst' -- указываем файл
fields terminated by ',' -- разделитель полей
enclosed by '"' -- заключить каждое поле между "
lines terminated by '\\n' -- разделитель строки
from colors;
Если какой-либо разделитель не нужен, то его определение можно опустить.
В отличие от Oracle здесь нельзя вывести более одной выборки в один файл.Команда LOAD DATA INFILE является обратной и позволяет загрузить данные из файла в таблицу.
Например пусть есть файл myfile.lst, со следующим содержимым в обычной для Windows русской кодировке.
"50", "светло-коричневый" "51", "темно-коричневый"Тогда загрузить данные можно следующей командой.
load data infile 'c:/myfile.lst'
ignore -- пропускаем если данные уже в таблице
into table colors
character set cp1251 -- кодировка исходного файла
fields
terminated by ',' -- разделитель полей
enclosed by '"' -- поле заключено между "
lines terminated by '\\n'; -- разделитель строки
Если таблица colors использует другую кодировку, например utf-8,
данные преобразуются корректно.PostgreSQL
Команда copy в PostgreSQL позволяет, как сохранить выборку в файле, так загрузить данные из файла. Файловый источник должен существовать заранее, при записи автоматически он не создается. При повторном копировании содержимое файла перезаписывается. При чтении из файла в таблицу, кодировки строковых данных должны совпадать.
-- простой вывод данных в файл
copy (select * from colors) to 'c:/myfile.lst';
-- предположим, база настроена на кодировку utf-8,
-- тогда и строки сохранятся в файл в utf-8
copy
(
select '"50", "светло-коричневый"'
union
select '"51", "темно-коричневый"'
) to 'c:/myfile.lst';
-- а теперь загрузим данные в таблицу
copy colors (id, cname) from 'c:/myfile.lst'
with delimiter ',' -- разделитель полей
null 'null' -- чем заменять пустые значения
cvs -- CSV настройки
quote '"' -- поле заключено между "
escape '\\\\' ; -- ESC символ, для пропуска "
Комментариев нет:
Отправить комментарий