I'm struggling to get text from an input file into MySQL with Julia.
Using this code:
using CSV
using MySQL
conn = DBInterface.connect(MySQL.Connection, "localhost", "root", "abcdefgh", db="nba")
create_games_table = "CREATE TABLE IF NOT EXISTS games(
home_team VARCHAR(20)
);"
DBInterface.execute(conn, create_games_table)
insert_into_games = DBInterface.prepare(conn, "INSERT INTO games VALUES(?)")
file_name = "C:/Myfilename.txt"
csv_reader = CSV.File(file_name; header=[:Date, :Home, :H_pts], delim="\t", dateformat="e u d yyyy")
for row in csv_reader
@show typeof(row.Home)
DBInterface.execute(insert_into_games, [row.Home])
end
I get this output:
typeof(row.Home) = String15
ERROR: MethodError: no method matching bind!(::MySQL.API.BindHelper, ::Vector{MySQL.API.MYSQL_BIND}, ::Int64, ::String15)
Closest candidates are:
bind!(::Any, ::Any, ::Any, ::Missing) at C:\Users\Graham\.julia\packages\MySQL\EgAUf\src\prepare.jl:313
bind!(::Any, ::Any, ::Any, ::Dates.TimeType) at C:\Users\Graham\.julia\packages\MySQL\EgAUf\src\prepare.jl:334
bind!(::Any, ::Any, ::Any, ::Union{MySQL.API.Bit, String, DecFP.DecimalFloatingPoint, Vector{UInt8}}) at C:\Users\User\.julia\packages\MySQL\EgAUf\src\prepare.jl:357
...
Stacktrace:
[1] (::MySQL.var"#36#43"{MySQL.Statement, Vector{String15}})(i::Int64)
It seems to be expecting Int input, and sure enough if I change the file input and db columns to Int, it works. But why is it expecting Int input when I'm trying to populate a text field?