Sql export json

Материал из Eludia
Перейти к: навигация, поиск

Содержание

Описание

Принимает на вход SQL-запрос и поток вывода. Экспортирует результат SQL в формате JSON. Предназначается для (частичного) экспорта данных, предназначенного для дальнейшего импорта при помощи sql_import_json или других инструментов, поддерживающих формат JSON.

Одной записи выборки соответствует 1 строка, записываемая в поток. Формат JSON-записи зависит от последовательности SQL-запросов.

Описание таблицы

Если запрос имеет вид

DESCRIBE $table

, то в ответ будет экспортирована запись, совместимая по структуре с описанием схемы данных, за исключением раздела data:

["keys":[...],"columns":[...],"name":"$table"]

(характерный признак: ассоциативный список).

Оператор DESCRIBE может не поддерживаться используемым диалектом SQL, такие запросы обрабатываются sql_export_json самостоятельно.

Краткая форма строки

Если запрос имеет вид

SELECT * FROM $table ...

и ему предшествовал DESCRIBE на ту же таблицу, то он порождает множество строк вида

["1", "Иванов", "000/1", ...]

(характерный признак: неассоциативный список скаляров).

Где компоненты соответствуют столбцам таблицы в следующем порядке: сначала id, потом все остальные по алфавиту наименований.

Полная форма строки

В остальных случаях генерируются строки вида

["$table", ["id": ..., "fake": ...]]

(характерный признак: список, 2-й элемент которого — список).

Синопсис (Perl5)

	# Пример из жизни: экспорт нескольких выборок в один файл

	require IO::Compress::Gzip;
	
	my $fn = '/i/upload/images/db';
	
	my $path = $r -> document_root . $fn;
	
	my $out = new IO::Compress::Gzip ($path);
	
	foreach (
		'DESCRIBE my_table',
		...
		'SELECT * FROM my_table WHERE fake = 0',
		...
	) { sql_export_json ($_ => $out)}
	
	$out -> close; 

	download_file ({
		path      => $fn,
		file_name => "export.gz",
	}); 

	unlink $path;
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Разработчику
Администратору
Инструменты