From 0146f7bc61fd750ffee3db9b6e0d263900e43656 Mon Sep 17 00:00:00 2001 From: "T.C. Jiang" <274328912@qq.com> Date: Tue, 6 Jan 2026 11:15:34 +0800 Subject: [PATCH 1/2] load tables with auto increment key --- src/load.jl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/load.jl b/src/load.jl index c2cb869..ee88c8f 100644 --- a/src/load.jl +++ b/src/load.jl @@ -34,13 +34,14 @@ const SQLTYPES = Dict{Type, String}( checkdupnames(names) = length(unique(map(x->lowercase(String(x)), names))) == length(names) || error("duplicate case-insensitive column names detected; sqlite doesn't allow duplicate column names and treats them case insensitive") -function createtable(conn::Connection, nm::AbstractString, sch::Tables.Schema; debug::Bool=false, quoteidentifiers::Bool=true, createtableclause::AbstractString="CREATE TABLE", columnsuffix=Dict()) +function createtable(conn::Connection, nm::AbstractString, sch::Tables.Schema; debug::Bool=false, quoteidentifiers::Bool=true, createtableclause::AbstractString="CREATE TABLE", columnsuffix=Dict(), auto_increment_primary_key_name::AbstractString="") names = sch.names checkdupnames(names) types = [sqltype(T) for T in sch.types] columns = (string(quoteidentifiers ? quoteid(String(names[i])) : names[i], ' ', types[i], ' ', get(columnsuffix, names[i], "")) for i = 1:length(names)) - debug && @info "executing create table statement: `$createtableclause $nm ($(join(columns, ", ")))`" - return DBInterface.execute(conn, "$createtableclause $nm ($(join(columns, ", ")))") + auto_increment_column = isempty(auto_increment_primary_key_name) ? "" : "$(auto_increment_primary_key_name) INT AUTO_INCREMENT PRIMARY KEY, " + debug && @info "executing create table statement: `$createtableclause $nm ($(auto_increment_column)$(join(columns, ", ")))`" + return DBInterface.execute(conn, "$createtableclause $nm ($(auto_increment_column)$(join(columns, ", ")))") end """ @@ -93,7 +94,7 @@ function load(itr, conn::Connection, name::AbstractString="mysql_"*Random.randst # start a transaction for inserting rows DBInterface.transaction(conn) do params = chop(repeat("?,", length(sch.names))) - stmt = DBInterface.prepare(conn, "INSERT INTO $name VALUES ($params)") + stmt = DBInterface.prepare(conn, "INSERT INTO $name ($(join(sch.names .|> string .|> quoteid,", "))) VALUES ($params)") for (i, row) in enumerate(rows) i > limit && break debug && @info "inserting row $i; $(Tables.Row(row))" From 5220d19ca53e7b8ee31c3ac4c2fae0a1566efa8f Mon Sep 17 00:00:00 2001 From: Jacob Quinn Date: Wed, 14 Jan 2026 01:27:03 -0700 Subject: [PATCH 2/2] Fix syntax error: add missing ) in function signature Co-Authored-By: Claude Opus 4.5 --- src/load.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/load.jl b/src/load.jl index a0acbd7..e30e9e3 100644 --- a/src/load.jl +++ b/src/load.jl @@ -35,7 +35,7 @@ const SQLTYPES = Dict{Type, String}( checkdupnames(names) = length(unique(map(x->lowercase(String(x)), names))) == length(names) || error("duplicate case-insensitive column names detected; sqlite doesn't allow duplicate column names and treats them case insensitive") -function createtable(conn::Connection, nm::AbstractString, sch::Tables.Schema; debug::Bool=false, quoteidentifiers::Bool=true, createtableclause::AbstractString="CREATE TABLE", coltypes=Dict(), columnsuffix=Dict(), auto_increment_primary_key_name::Union{Nothing,AbstractString}=nothing +function createtable(conn::Connection, nm::AbstractString, sch::Tables.Schema; debug::Bool=false, quoteidentifiers::Bool=true, createtableclause::AbstractString="CREATE TABLE", coltypes=Dict(), columnsuffix=Dict(), auto_increment_primary_key_name::Union{Nothing,AbstractString}=nothing) names = sch.names checkdupnames(names) types = [sqltype(T, coltypes, names[i]) for (i, T) in enumerate(sch.types)]