Db2 Developer-C 11.1
Firebird 3.0
MariaDB 10.2 (unavailable)
MariaDB 10.3
MariaDB 10.4
MariaDB 10.5
MariaDB 10.6
MySQL 5.5
MySQL 5.6
MySQL 5.7
MySQL 8.0
Oracle 11g Release 2
Oracle 18c
Oracle 21c
Postgres 8.4 (unavailable)
Postgres 9.4 (unavailable)
Postgres 9.5
Postgres 9.6
Postgres 10
Postgres 11
Postgres 12
Postgres 13
Postgres 14
SQLite 3.8 (unavailable)
SQLite 3.16 (unavailable)
SQLite 3.27
SQL Server 2012 (unavailable)
SQL Server 2014
SQL Server 2016
SQL Server 2017
SQL Server 2017 (Linux)
SQL Server 2019
SQL Server 2019 (Linux)
YugabyteDB 2.6
YugabyteDB 2.8
No sample DB
run
clear
markdown
compare
help
best fiddles
feedback
Fiddle Statistics
MySQL 8.0
SQLite 3.27
Oracle 18c
Firebird 3.0
MariaDB 10.4
MySQL 5.7
MySQL 5.6
MySQL 5.5
MariaDB 10.3
Db2 Developer-C 11.1
SQL Server 2014
SQL Server 2016
SQL Server 2017
SQL Server 2017 (Linux)
SQL Server 2019 (Linux)
SQL Server 2019
YugabyteDB 2.8
Oracle 21c
MariaDB 10.5
Oracle 11g Release 2
Node.js 18
MariaDB 10.6
YugabyteDB 2.6
Postgres 12
Postgres 9.5
Postgres 11
Postgres 10
Postgres 9.6
Postgres 13
Postgres 14
≡
clear
markdown
feedback
By using db<>fiddle, you agree to license everything you submit by
Creative Commons CC0
.
3601395 fiddles created (48002 in the last week).
CREATE TABLE tmp_data (raw text); INSERT INTO tmp_data VALUES ('1 2 3 4') -- first row is meant as "column name" , ('1 1 0 1') -- tab separated , ('1 0 0 1') , ('1 0 1 1');
✓
4 rows affected
hidden batch(es)
-- Create CREATE TABLE script SELECT 'CREATE TABLE tbl (col' || replace(raw, ' ', ' bool, col') || ' bool)', raw FROM (SELECT raw FROM tmp_data LIMIT 1) t;
?column?
raw
CREATE TABLE tbl (col1 bool, col2 bool, col3 bool, col4 bool)
1 2 3 4
…
hidden batch(es)
-- Safer, more generic query SELECT 'CREATE TABLE tbl(' || string_agg(quote_ident('col' || col), ' bool, ' ORDER BY ord) || ' bool)' FROM (SELECT raw FROM tmp_data LIMIT 1) t , unnest(string_to_array(t.raw, E'\t')) WITH ORDINALITY c(col, ord);
?column?
CREATE TABLE tbl(col1 bool, col2 bool, col3 bool, col4 bool)
…
hidden batch(es)
-- Execute dynamically DO $$BEGIN EXECUTE ( SELECT 'CREATE TABLE tbl (col' || replace(raw, ' ', ' bool, col') || ' bool)' FROM (SELECT raw FROM tmp_data LIMIT 1) t ); END$$;
✓
hidden batch(es)
-- INSERT data INSERT INTO tbl SELECT (('(' || translate(raw, E'10\t', 'tf,') || ')')::tbl).* FROM (SELECT raw FROM tmp_data OFFSET 1) t;
3 rows affected
hidden batch(es)
TABLE tbl;
col1
col2
col3
col4
t
t
f
t
t
f
f
t
t
f
t
t
…
hidden batch(es)