Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的Oracle db:缺少逗号_Python_Sql_Oracle_Cx Oracle - Fatal编程技术网

Python中的Oracle db:缺少逗号

Python中的Oracle db:缺少逗号,python,sql,oracle,cx-oracle,Python,Sql,Oracle,Cx Oracle,我正在尝试使用Oracle向表中插入。我收到“缺少逗号”错误。有什么不对劲吗? 编辑:res是一个数值 edit2:我弄明白了,然后修改了密码 with io.open(path, encoding='utf-8') as f: reader = csv.reader(f, delimiter=';') first = True for r in reader: if first: first = False

我正在尝试使用Oracle向表中插入。我收到“缺少逗号”错误。有什么不对劲吗? 编辑:res是一个数值 edit2:我弄明白了,然后修改了密码

with io.open(path, encoding='utf-8') as f:
    reader = csv.reader(f, delimiter=';')
    first = True
    for r in reader:
        if first:
            first = False
            continue
        res = clearNumber(r[4])
        cursor.execute("INSERT INTO PHONES(name, phnumber, phnumber_int) VALUES(:name, :phnumber, :phnumber_int)", [r[3], r[4], res])
        conn.commit()

为什么不使用已经存在的工具来完成作业

  • SQL*加载器(大约40年前构建)
  • 外部表(将文件操作为表)
  • csv2db(相当新的工具,支持多个RDBMS)
  • Elasticsearch Logstash(很棒的工具)
csv2db演示
$echo'drop user csvdata cascade;'|sqlplus-S系统/oracle@localhost:1521/XEPDB1
用户已删除。
已过时间:00:00:01.07

$sqlplus-S系统/oracle@localhost:1521/XEPDB1您使用的是什么Oracle驱动程序?这就是传递绑定值的方法吗?我对此表示怀疑。你能在手机中插入一行吗?从文档中可以看到一个例子:cur.execute(“插入测试(num,data)值(%s,%s)”,(42,'bar')-你的问题是你的变量是字符串的一部分,而不是变量的值。编辑:很抱歉,这是postgreSQL-所以这里可能不一样,我想使用占位符。我以前只使用过SQLite,并且:var在每个示例中都是正确的。:var是正确的,但请提供有关您收到的错误消息的其他信息,列名称、phnumber和phnumber_int的类型以及r[3]和r[4]中的值我需要它是一个python程序,连接到精确的oracle云数据库
$echo 'drop user csvdata cascade;' | sqlplus -S system/oracle@localhost:1521/XEPDB1

User dropped.

Elapsed: 00:00:01.07
$sqlplus -S system/oracle@localhost:1521/XEPDB1 <<EOF
create user csvdata identified by load default tablespace USERS temporary tablespace TEMP quota unlimited on USERS;
grant create session, resource to csvdata;
EOF

User created.

Elapsed: 00:00:00.06

Grant succeeded.

Elapsed: 00:00:00.01

# https://github.com/csv2db/csv2db
$csv2db generate --file=movies.csv --table=MOVIES | sed 's/1000/4000/' \
| sqlplus -S csvdata/load@localhost:1521/XEPDB1

Table created.

Elapsed: 00:00:00.02
$time csv2db load --user=csvdata --password=load --host=localhost --port=1521 --dbname=XEPDB1 \
       --separator=',' --table=MOVIES --directpath \
       --file=movies.csv

Loading file movies.csv
File loaded.


real    0m3.193s
user    0m1.201s
sys     0m0.422s

$echo 'select count(*) from movies;' | sqlplus -S csvdata/load@localhost:1521/XEPDB1

  COUNT(*)
----------
     76086

Elapsed: 00:00:00.17