Python中的Oracle db:缺少逗号
我正在尝试使用Oracle向表中插入。我收到“缺少逗号”错误。有什么不对劲吗? 编辑:res是一个数值 edit2:我弄明白了,然后修改了密码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
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(很棒的工具)
$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