I am aware vertica does not encourges us to use schema names starting with number. But our usecase needed to follow numeric standard in order to support our analytics and machine learning pipeline.
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/pandas/core/generic.py", line 1201, in to_sql
chunksize=chunksize, dtype=dtype)
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/pandas/io/sql.py", line 470, in to_sql
chunksize=chunksize, dtype=dtype)
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/pandas/io/sql.py", line 1148, in to_sql
table.insert(chunksize)
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/pandas/io/sql.py", line 664, in insert
self._execute_insert(conn, keys, chunk_iter)
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/pandas/io/sql.py", line 639, in _execute_insert
conn.execute(self.insert_statement(), data)
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 982, in execute
return meth(self, multiparams, params)
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", line 293, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1101, in _execute_clauseelement
distilled_params,
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1250, in _execute_context
e, statement, parameters, cursor, context
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1478, in _handle_dbapi_exception
util.reraise(*exc_info)
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1226, in _execute_context
cursor, statement, parameters, context
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 585, in do_executemany
cursor.executemany(statement, parameters)
File "/opt/anaconda3/envs/py27/lib/python2.7/site-packages/vertica_python/vertica/cursor.py", line 257, in executemany
"executemany is implemented for simple INSERT statements only")
NotImplementedError: executemany is implemented for simple INSERT statements only
I am aware vertica does not encourges us to use schema names starting with number. But our usecase needed to follow numeric standard in order to support our analytics and machine learning pipeline.
e.g If we have two schema lets say
abcd_dmand0223_dm,abcd_dmall insert just work fine, but for0223_dminsert throw following issue:Version Info:
Vertica : Vertica Analytic Database v8.0.0-1
Python Version: 2.7
vertica-python: 0.10.4
sqlalchemy-vertica==0.0.4
pandas==0.23.4
SQLAlchemy==1.3.13
The way we circumvent this issue was change the regex of this file
https://github.com/vertica/vertica-python/blob/master/vertica_python/vertica/cursor.py#L120
to be
RE_NAME_BASE = u"[0-9_a-zA-Z_][\\w\\d\\$_]*"this did fix the issue.