Локальная песочница данных

Импортируйте локальные CSV, JSON, JSONL и Parquet и выполняйте SQL-запросы DuckDB прямо в браузере.

Введённые данные и файлы остаются в браузере

Импорт локальных данных

Перетащите файл данных сюда

CSV, TSV, JSON, JSONL, NDJSON или Parquet. Импортируйте несколько файлов для JOIN.

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

Файлы остаются на устройстве. DuckDB работает в выделенном Web Worker из локальных ресурсов; SQL не может читать URL и другие файлы браузера.

Ограничения: до 1 GiB на входной файл, 128 MiB при перекодировании текста, 512 MiB памяти DuckDB, 100 000 строк предпросмотра, 500 строк на страницу и 512 MiB для резервной загрузки или Parquet. JSON/JSONL целиком декодируется в памяти как плоский набор записей, а не по частям. Отмена освобождает все таблицы.

Импортированные таблицы

Таблицы ещё не импортированы.

    SQL-запрос

    Нажмите Ctrl или Cmd + Enter. Разрешён один локальный запрос SELECT или WITH только для чтения.

    Результат создаётся внутри worker и читается ограниченными страницами.
    Результат запроса

    Импортируйте таблицу и выполните запрос, чтобы просмотреть результат.

    На этой странице

    Локальная песочница запускает DuckDB-WASM в браузере и позволяет запрашивать CSV, JSON, JSONL и Parquet без загрузки данных на сервер. Каждый файл получает выбранное вами имя SQL-таблицы, а несколько файлов можно объединять.

    Подробное описание функциональности

    DuckDB и Web Worker входят в состав MyDevTools и загружаются только при первом импорте. SharedArrayBuffer, междоменная изоляция, сервер и внешний CDN не нужны. Файлы остаются в текущей вкладке. Для пользовательских запросов отключены внешний доступ, установка расширений, чтение URL и изменение базы.

    Редактор поддерживает SELECT и WITH DuckDB: фильтрацию, группировку, агрегаты, сортировку и JOIN. Результат создаётся в worker с явным лимитом предпросмотра 100 000 строк. Таблица запрашивает до 500 строк и держит ограниченное число DOM-элементов. Целые и десятичные числа отображаются без преобразования в JavaScript Number.

    CSV, JSON и JSONL экспортируются порциями с контролем обратного давления. Parquet создаётся DuckDB в одном буфере. Резервные загрузки и буфер Parquet ограничены 512 МиБ.

    Практические примеры

    SELECT: импортируйте orders.csv как orders и выполните SELECT * FROM "orders" LIMIT 100.

    WHERE: SELECT * FROM "orders" WHERE "status" = 'paid' фильтрует локально.

    GROUP BY: SELECT "country", SUM("amount") FROM "orders" GROUP BY "country".

    JOIN: импортируйте customers.parquet второй таблицей и объедините по общему ключу. Кнопка JOIN создаст начальный запрос.

    Как использовать этот инструмент

    1. Шаг 1. Импортируйте файлы

      Выберите формат или определение по расширению, задайте имя таблицы и импортируйте. Для CSV доступны разделитель, заголовок и кодировка.

    2. Шаг 2. Напишите локальный SQL

      Выберите пример SELECT, WHERE, GROUP BY или JOIN и отредактируйте его. Нажмите Ctrl или Cmd + Enter.

    3. Шаг 3. Просмотрите ограниченный результат

      Прокручивайте виртуальную таблицу: из worker передаётся только небольшая страница.

    4. Шаг 4. Экспортируйте или перезапустите

      Экспортируйте CSV, JSON, JSONL или Parquet. Отмена и перезапуск завершают worker и освобождают все данные.

    Советы и лучшие практики

    • Заключайте имена таблиц и столбцов в двойные кавычки; примеры делают это автоматически.
    • При работе с большими файлами используйте LIMIT и точные условия WHERE.
    • Автоопределение типов CSV может превратить идентификатор с ведущими нулями в число; для точного сохранения текста используйте Конвертер форматов данных.
    • BIGINT и DECIMAL не округляются интерфейсом через JavaScript Number.
    • Отмена — жёсткая граница ресурсов: worker завершается, и файлы нужно импортировать снова.
    • CSV/JSON/JSONL могут записываться потоком; Parquet буферизуется и ограничен 512 МиБ.

    Помогите выбрать следующий шаг

    Что улучшить дальше?

    Выберите одно предложение. Это идеи, а не обещанные функции.

    Выберите один вариант

    Отправляется только выбранный вариант как анонимный счётчик. В голосе нет введённых данных, сведений о файлах, URL, cookie или идентификатора; он не сохраняется в браузере. После перезагрузки страницы можно проголосовать снова.