Generator

SQL UPDATE Generator

Paste CSV, TSV, or other delimited text, choose a key column for the WHERE clause, and generate one UPDATE statement per row for MySQL, PostgreSQL, SQLite, or MSSQL.

Used when header row is off. Leave empty to auto-generate column_1, column_2, and so on.

Validation

Paste data, choose a key column, then generate SQL.

Output actions

What this handles

  • One UPDATE statement per row, scoped by your key column
  • Quoted CSV values, including commas inside fields
  • Apostrophes escaped as doubled single quotes
  • Numbers kept unquoted; booleans normalized per dialect
  • Optional skip of blank cells so you only update changed columns

Parsed data preview

Preview the rows that will be used to build your UPDATE statements.

No preview yet. Generate SQL to inspect parsed rows.

Generated SQL

Client-side only, ready to copy or download.

How to use

Paste your structured text, set the table name, pick the column that uniquely identifies each row, and generate UPDATE statements.

Good for

Bulk fixes, data corrections, partial column refreshes, migration cleanup, and updating production rows from spreadsheets.

Notes

Always review the output and run inside a transaction. The tool warns about inconsistent column counts before generating SQL.

About the SQL UPDATE Generator

The SQL UPDATE Generator turns CSV, TSV, or any delimited text into ready-to-run UPDATE statements for MySQL, PostgreSQL, SQLite, and MSSQL. You pick a key column (typically a primary key like id) and the tool generates one UPDATE per row, with the remaining columns becoming SET assignments. Everything runs in the browser — your data is never sent to a server.

  • Auto-detects comma, tab, semicolon, and pipe delimiters
  • Choose any column as the WHERE key — not just id
  • Quotes identifiers correctly per dialect (backticks, double-quotes, brackets)
  • Converts blank cells to NULL or skips them entirely
  • Handles boolean normalization across MySQL, PostgreSQL, SQLite, and MSSQL
  • Detects and warns about inconsistent column counts before generating SQL

How to Generate SQL UPDATE Statements from CSV

  1. 1

    Paste your delimited data

    Paste CSV, TSV, or any structured text into the Input data box. Click Sample data to see a working example.

  2. 2

    Enter your table name

    Type the exact name of the database table you want to update. This becomes the target of the generated UPDATE statement.

  3. 3

    Pick your key column

    Choose the column used in each WHERE clause — usually a primary key like id. All other columns will be set in the SET clause.

  4. 4

    Choose dialect and options

    Select MySQL, PostgreSQL, SQLite, or MSSQL. Toggle whether blanks become NULL, and whether blank cells should be skipped entirely so you only update non-empty values.

  5. 5

    Click Generate SQL

    The tool parses your input, previews rows in the table below, and outputs one UPDATE statement per row in the result panel.

  6. 6

    Copy or download the result

    Use Copy SQL to paste into your database client, or Download .sql to save the file.

Tip: Always wrap bulk UPDATE runs in a transaction (BEGIN; ... COMMIT;) so you can ROLLBACK if anything looks off.

Common Use Cases

Bulk Data Corrections

  • • Fix typos in product names across thousands of rows
  • • Re-assign category IDs in one batch
  • • Update customer contact info from a corrected CSV

Partial Column Refreshes

  • • Re-import only the columns you changed in a spreadsheet
  • • Apply price updates without touching descriptions
  • • Use "Skip blank cells" to update only specified fields

Data Migration Cleanup

  • • Backfill new columns added during a schema change
  • • Reformat values exported from a legacy system
  • • Patch rows after a partial migration failure

Operational Fixes

  • • Bulk-correct order statuses after an outage
  • • Re-flag inactive accounts from a support spreadsheet
  • • Update feature flags or entitlements per user

QA & Test Setup

  • • Mutate seeded fixtures before running a test scenario
  • • Reset specific rows to known good values
  • • Create reproducible test states quickly

Cross-Database Use

  • • Re-generate the same updates for MySQL and PostgreSQL
  • • Switch dialects without re-quoting identifiers
  • • Compare boolean handling across databases

Frequently Asked Questions

What input formats does this SQL UPDATE generator support?

The tool accepts CSV (comma-separated), TSV (tab-separated), semicolon-delimited, and pipe-delimited text. Set the delimiter to Auto detect and the tool will pick the right one, or choose manually.

Is my data safe? Does this tool send my CSV to a server?

No data ever leaves your browser. All parsing and SQL generation runs entirely in client-side JavaScript. Your spreadsheet data and any sensitive content is never uploaded or logged.

Which SQL dialects are supported?

MySQL, PostgreSQL, SQLite, and MSSQL (SQL Server). Each dialect uses the correct identifier quoting style — backticks for MySQL, double-quotes for PostgreSQL and SQLite, and square brackets for MSSQL. Boolean handling is also normalized per dialect.

Can I use a column other than id as the key?

Yes. The Key column dropdown lists every column found in your input. Pick whichever uniquely identifies the row — it can be user_id, email, sku, or any other column. Make sure the value is unique per row to avoid mass-updating unintended records.

What does "Skip blank cells in SET clause" do?

When enabled, any blank cell is omitted from the SET clause for that row, so the existing column value in the database is preserved. This is useful when you want to update only a subset of columns and leave the rest untouched. When disabled, blank cells become either NULL or empty strings depending on the "Convert blank cells to NULL" setting.

How are apostrophes and special characters handled?

Single quotes inside string values are automatically escaped as doubled single quotes (''), which is the ANSI SQL standard. Quoted CSV fields like "O'Reilly" are parsed correctly before escaping.

Should I run all the generated UPDATE statements at once?

Always wrap bulk updates in a transaction (e.g., BEGIN; ... COMMIT;) so you can roll back if something looks wrong. Run a quick SELECT with the same WHERE clauses first to verify the rows match your expectations.

Is there a row limit?

There is no enforced limit — the tool processes all rows you paste. The preview shows the first 12 rows for performance, but the full SQL is always generated.