pgx
PGX — Lightweight Postgres for AI agents. Written in Rust. Thousands of isolated databases in one runtime. 🐘
翻译准备中
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证TableSkim is a lightweight, fast viewer for tabular files. Open a large CSV, an Excel workbook, a Parquet or JSON file or a DuckDB / SQLite database and start scrolling immediately: rows are loaded in the background while the window stays responsive.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗TableSkim is a lightweight, fast viewer for tabular files. Open a large CSV, an Excel workbook, a Parquet or JSON file or a DuckDB / SQLite database and start scrolling immediately: rows are loaded in the background while the window stays responsive.
.xlsx, .xlsm) files, including workbooks
with multiple sheetsdata.csv.gz)
are decompressed on the fly.ndjson, .jsonl), also gzip- or zstd-compressed; object
keys become columns, and nested objects and arrays are shown as text: in
the terminal UI); a query is shown as a sheet. SQL that was run is kept
in a history shared by all windows and sessions (History,
Ctrl+Up / Ctrl+Down; Up / Down), and Tab completes table and
column names and keywordsf in the
terminal UI) that compare by type: numbers numerically, dates by day or
time (= 2024-01-31 matches any time that day, also in date text), and
booleans as TRUE / FALSE; matches takes a regular expressionS in the terminal UI): row, empty and distinct counts,
min / max, sum, mean and standard deviation, and the most frequent
values, over the filtered rows; double-click a value to filter by itB in the
terminal UI) of numbers and dates in bins of round widths (whole days,
months, years, ...), or of the most frequent values of other columns, in
a window of their own; double-click a bar (Enter) to filter the sheet
to its rows, and the histogram followsM in the terminal UI), with the correlation
coefficient and the least-squares line; with text on X, box plots of each
category. Histograms and plots can be saved as PNG or SVG imagesA in the terminal UI): count the rows
by the values of some columns, with the sum, mean, min, max, ... of
others, into a sheet of its own# numbers, @ dates, ? booleans)
and per-column display formats: thousands separators, decimal places and
date formats (right-click a column header → Format; %)tail -f (File → Follow End of File; T):
appended lines of CSV / TSV files are read on their own, and the view
stays at the last row; File → Open Recent lists the last files openedB12 or R12C2) or a column by its name or
letter (Edit → Go To..., Ctrl+G in both UIs)x in the terminal UI) and
show them all again (View → Show All Columns; X)|)I in the terminal UI), with undo, paste of tab-separated text
and saving that rewrites only the edited lines or cells, keeping the
encoding, compression and everything else of the file; nothing can change
a file outside edit mode.xlsx) or Parquet (File → Export View...; w);
Excel and Parquet keep numbers, booleans and dates typed, also when they
come from CSV textF1) and installed as HTML for web browsers; see also docs/tableskim commandSee the user manual (日本語) for a full guide with screenshots. The manual is also online on the TableSkim website.
tableskim [options] [files...]
tableskim opens the GUI when a graphical display is available and the
terminal UI otherwise: on Linux when neither DISPLAY nor WAYLAND_DISPLAY
is set, and on macOS in an SSH session. Each file opens in its own window.
The terminal UI shows exactly one file, which must be given on the command
line (it exits with an error otherwise).
| Option | Description |
|---|---|
-t, --tui | Use the terminal UI even if a graphical display is available |
--log <file> | Write log messages to a file |
--encoding <name> | Encoding of CSV / TSV files: auto (default), utf-8, utf-16le, utf-16be or cp932 (shift_jis) |
--header <when> | Whether the first row of CSV / TSV files and Excel sheets holds the column names: auto (default), yes or no |
-v, --verbose | Enable verbose (debug) logging |
-V, --version | Show version information and exit |
--summary and --head N print each file's columns with their types (and,
with --summary, statistics) and its first rows to standard output as
Markdown or JSON (--format json), and exit without a UI: a quick look at
any table file from a script or an AI agent. See
Printing a summary.
tableskim --summary data.xlsx
tableskim --head 20 --format json data.csv.gz
Files can also be opened from File → Open... (Ctrl+O).
On macOS the command is the executable inside the app bundle; to put it on
the PATH:
ln -s /Applications/TableSkim.app/Contents/MacOS/TableSkim /usr/local/bin/tableskim
On Windows, TableSkim.exe is a GUI application (without a console) for the GUI.
Use tableskim-tui.exe, installed next to it, for the terminal UI: it is a
console application, so it runs in the terminal it is started from.
Log messages are written only with --log <file> (they would otherwise be
drawn over the screen). Press ? for the key list. Main keys: arrows or
hjkl to move, Ctrl+G to go to a row, cell or column, Shift+arrows or
v to select, x / X to hide the column / show all columns, | to
freeze the columns up to the cursor, Enter to show a whole cell in the
sidebar, S for the statistics of the cursor's column, B for its
histogram, y to copy the
selection as TSV, w to export the sheet as shown, Tab to switch sheets, s for the sidebar, H to switch
the first row between the guess and header / data (CSV / TSV and Excel), E to switch the text
encoding, r to revert, q to quit.
Copying uses the OSC 52 escape sequence, so it works over SSH; the terminal
must allow it (inside tmux, enable set-clipboard).
Requirements:
The bundled dependencies (FLTK, DuckDB, SQLite, OpenXLSX, csv-parser, CLI11,
spdlog, zlib, bzip2, xz, zstd, RE2, Abseil, Catch2, FTXUI) are downloaded with CMake's
FetchContent during the first configure. The first build compiles DuckDB
and therefore takes a while.
On Ubuntu 24.04, install the build tools first (for both GUI and TUI):
sudo apt-get update
sudo apt-get install -y build-essential cmake ninja-build git pkg-config
For the default GUI build, also install these system development packages, as in CI. FetchContent builds FLTK itself, but does not install its system libraries:
sudo apt-get install -y \
libfontconfig1-dev libx11-dev libxext-dev libxft-dev libxinerama-dev \
libxcursor-dev libxrender-dev libxfixes-dev libpango1.0-dev libcairo2-dev \
libwayland-dev wayland-protocols libxkbcommon-dev libdbus-1-dev \
libgtk-3-dev libdecor-0-dev libgl1-mesa-dev libglu1-mesa-dev
Other Linux distributions need the corresponding development packages;
see .github/workflows/ci.yml for Rocky Linux 8 and 10. The TUI-only build
needs none of these GUI packages:
cmake --preset release -DTABLESKIM_BUILD_GUI=OFF
./build.sh
To enable the optional Linux UI tests, install python3-pyte (TUI) and
xvfb (GUI). ccache is optional and speeds up repeated builds.
On macOS, install the Xcode command line tools, CMake and Ninja. For the default GUI build on Linux or macOS, run:
./build.sh # release build + tests
./build.sh debug # debug build + tests
The build output goes to build/<preset>/. The steps can also be run
manually:
cmake --preset release
cmake --build --preset release
ctest --preset release
The asan preset builds and tests a Debug build with AddressSanitizer and
UndefinedBehaviorSanitizer (cmake --preset asan, cmake --build --preset asan, ctest --preset asan).
macOS builds run on macOS 12 or later (CMAKE_OSX_DEPLOYMENT_TARGET). The
macos-x86_64-release and macos-x86_64-debug presets build for Intel
Macs, also on Apple silicon, where the tests run under Rosetta 2;
TABLESKIM_PRESET=macos-x86_64-release ./package.sh dmg packages it.
To build only the terminal UI (no FLTK, X11 or fontconfig needed, e.g. for
a headless server), configure with -DTABLESKIM_BUILD_GUI=OFF; tableskim
then always starts the terminal UI.
On Linux, system libraries can be used instead of the bundled ones:
| CMake option | Uses system copy of |
|---|---|
-DTABLESKIM_USE_SYSTEM_FLTK=ON | FLTK (1.4 or newer) |
-DTABLESKIM_USE_SYSTEM_SQLITE=ON | SQLite |
-DTABLESKIM_USE_SYSTEM_COMPRESSION=ON | zlib, bzip2, liblzma, zstd |
The core also builds as WebAssembly for a browser-only app (web/), which
reads the file in the browser without uploading it. With the
Emscripten SDK
(in ~/emsdk, or sourced with emsdk_env.sh) and Node.js with npm:
./web.sh # build, then serve at http://127.0.0.1:8765/
./web.sh --dev # Vite's development server, reloading as web/src changes
./web.sh --pages # serve without the isolation headers, as GitHub Pages does
./web.sh --help # --debug, --port, --open, --no-build
See src/wasm/README.md for the details and its tests.
Use the Visual Studio 2026 presets:
cmake --preset vs-release
cmake --build --preset vs-release
or, from a Developer Command Prompt, the Ninja presets (which also use ccache when it is installed):
cmake --preset msvc-release
cmake --build --preset msvc-release
./package.sh [deb|rpm|dmg|zip|all] # Linux / macOS
package.bat [exe|zip|msix|all] # Windows
Packages are written to the release build directory. Pushing a tag such as
v0.1.0 builds packages for every platform with GitHub Actions and attaches
them to a GitHub release:
.deb (built on Ubuntu 24.04), .rpm (built on Rocky Linux 10),
and three ZIPs built on Rocky Linux 8 (glibc 2.28) for older
distributions: the GUI with Wayland, the GUI for X11 only (-x11), and
the terminal UI only (tableskim-tui).dmg and .zip.exe) and .zip; package.bat msix is not part of
the releasesrc/common/ — core library: data model, file backends, threadingsrc/gui/ — FLTK GUI (layout in gui.fl)src/tui/ — FTXUI terminal UIsrc/main.cxx — the tableskim entry point, which picks the GUI or TUItests/ — Catch2 unit testsdemo/ — script that generates the sample files in demo/data/See AGENTS.md for architecture notes, coding conventions and instructions for adding a new file format.
TableSkim is licensed under the GNU Affero General Public License v3.0.
The bundled fonts, BIZ UDPGothic and M PLUS 1 Code, are distributed under
the SIL Open Font License 1.1 (src/fonts/). The license texts
of the fonts and of all bundled libraries are shown in Help → About...
(at the end of the ? help in the terminal UI) and installed as
THIRD_PARTY_LICENSES.txt.