python - 简单建表sql适用于mysql和postgre,但在oracle中报错

标签 python mysql oracle postgresql

我使用 Python 和 cx_Oracle 来处理 Oracle 11g。

我有以下 SQL 与 MySQL/PostgreSQL 配合良好,

stock_info_create = 'CREATE TABLE STOCK_INFO(' + \
                    'CODE    VARCHAR2(255) NOT NULL,' + \
                    'NAME    VARCHAR2(255) NOT NULL,' + \
                    'TIMETOMARKET VARCHAR2(255),' + \
                    'PRIMARY KEY (CODE)' + \
                    ');'

返回的消息是

(cx_Oracle.DatabaseError) ORA-00911: invalid character
[SQL: 'CREATE TABLE STOCK_INFO(CODE    VARCHAR2(255) NOT NULL,NAME    VARCHAR2(255) NOT NULL,TIMETOMARKET VARCHAR2(255),PRIMARY KEY (CODE));']

当然,为了在Oracle中使用这个sql,我将VARCHAR更改为VARCHAR2,因为我认为错误是由错误的数据类型引起的。但改成VARCHAR2后还是不行。

另一个问题是表创建。

stock_h_create = 'CREATE TABLE STOCK_H_NONE(' + \
                 'CODE VARCHAR(16) NOT NULL,' + \
                 'DATE DATE,' + \
                 'OPEN FLOAT,' + \
                 'HIGH FLOAT,' + \
                 'CLOSE FLOAT,' + \
                 'LOW FLOAT,' + \
                 'VOLUME FLOAT,' + \
                 'AMOUNT FLOAT,' + \
                 'AUTYPE VARCHAR(16),' + \
                 'LAST_UPDATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,' + \
                 'PRIMARY KEY (CODE,AUTYPE,DATE)' + \
                 ');'

返回的消息是

Creating table STOCK_H_NONE... (cx_Oracle.DatabaseError) ORA-00904: : invalid identifier
[SQL: 'CREATE TABLE STOCK_H_NONE(CODE VARCHAR(16) NOT NULL,DATE DATE,OPEN FLOAT,HIGH FLOAT,CLOSE FLOAT,LOW FLOAT,VOLUME FLOAT,AMOUNT FLOAT,AUTYPE VARCHAR(16),LAST_UPDATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (CODE,AUTYPE,DATE));']

感谢您的任何帮助和访问。

最佳答案

Oracle 中的某些保留字不允许用作列名 - 数据类型属于这些保留字,例如日期数字。由于 Date 列,您收到“ORA-00904:无效标识符”错误。为了获得良好的实践,请尝试避免使用保留字作为列名称。

关于python - 简单建表sql适用于mysql和postgre,但在oracle中报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38733212/

相关文章:

oracle - Oracle Apex错误处理

python - 在 tkinter 中更改框架的大小,由类定义

python - 使用 Pandas 查询按部分字符串选择行

MySQL SELECT 语句计算已售轨道数量

MySQL使两列唯一

oracle - ORA-12805 :parallel query server died unexpectedly

sql - 限制 2 列的组合记录

python - 从 NETCDF 文件中提取数据的有效方法

python - 了解 numpy 百分位计算

mysql - MySQL 中的二进制日志记录