npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

sql-to-elastic

v1.1.3

Published

## Installation

Readme

sql-to-elastic

Installation

$ npm i -g sql-to-elastic

or

$ yarn global add sql-to-elastic

Usage

$ sql-to-elastic [options]

Options:
  -V, --version            output the version number
  -e, --elastic <type>     Elastic config location (default: "./config/elastic.json")
  -m, --mssql <type>       MSSQL config location (default: "./config/elastic.json")
  -q, --query <type>       Location of query to retrieve data from SQL Server (default: "./query.sql")
  -t, --totalQuery <type>  Location of query to retrieve total rows from sql server or a total row count (default: "./total.sql")
  -r, --totalRows <type>   Total rows to process (default: 100000)
  -h, --help               output usage information

Prerequisites

  1. Add a file at ./config/mssql.json containing private connection options for MSSQL in the following format:
    {
    	"user": "...",
    	"password": "...",
    	"server": "localhost",
    	"database": "...",
       
    	"options": {
    		"encrypt": true
    	}
    }
  2. Add a file at ./config/elastic.json containing private connection options for ElasticSearch in the following format:
    {
    	"client": {
    		"host": "localhost:9200",
    		"log": "trace"
    	},
    	"bulk": {
    		"_index": "index",
    		"_type": "type"
    	}
    }
  3. Add a query to select the total number of rows to transfer at ./total.sql. For example:
    SELECT COUNT(*) FROM Products
    or for large tables to avoid a full scan:
    SELECT SUM (row_count) as total
    FROM sys.dm_db_partition_stats
    WHERE object_id=OBJECT_ID('Products')   
    AND (index_id=0 or index_id=1);
  4. Add a query to select data to transfer data at ./query.sql, including @Offset and @Limit parameters to allow for paging. For example:
    ;WITH pg AS (
    	SELECT ProductId
    	FROM Products
    	ORDER BY ProductId
    	OFFSET @Offset ROWS
    	FETCH NEXT @Limit ROWS only
    )
    SELECT * FROM Products p
    JOIN pg ON p.ProductId = pg.ProductId

Development

  1. Run yarn install or npm install to install dependencies
  2. Run the utility with yarn start/npm start or node index.js

Issues

  • Paging is very tightly coupled to named SQL parameters right now. This should be more dynamic
  • Errors are not handled elegantly yet