我有分隔文本文件。
如何将此文本文件上传到 sybase 表的单列中。
我尝试了这个但出现错误
LOAD TABLE VOD_K
(telecastKey)
FROM
'C://Users//1336856//Documents//VOD.txt'
STRIP OFF
ESCAPES OFF
QUOTES OFF
ROW DELIMITED BY ','
错误:行分隔符必须与所有列分隔符不同。
这是我的文本文件:
假设这是 Sybase IQ(或 SQLAnywhere)...
DELIMITED BY 'some_character'
子句设置('some_character'也可以是十六进制代码)例如,假设源数据文件中不存在制表符(\x09):
LOAD TABLE VOD_K
(telecastKey)
FROM
'C://Users//1336856//Documents//VOD.txt'
STRIP OFF
ESCAPES OFF
QUOTES OFF
DELIMITED BY '\x09' <<<<==== set column delimiter to a tab
ROW DELIMITED BY ','
针对新错误(无效尺寸太大)的评论;这可能是由于数据库引擎无法正确读取 '\x09' 字符串所致),我猜测这可能与 Windows 上运行的 OP 有关(可能是字符集问题?)。
注意:我通常不使用 IQ 或 SQLAnywhere 数据库,但当我使用时,是在 unix/linux 上;所以除了尝试一些不同的事情之外,不能 100% 确定这个问题......
以下内容针对在 Linux 主机上运行的 SQL Anywhere 数据库(版本 17.0.7.3382)运行:
# Sample data file:
$ cd /tmp
$ echo "123456,234567,345678,456789,567890" > data.txt
$ cat data.txt
123456,234567,345678,456789,567890
# the following was run via a isql session against the SQL Anywhere db:
create table VOD_K
(telecastKey int not null)
go
LOAD TABLE VOD_K
(telecastKey)
FROM
'/tmp/data.txt'
STRIP OFF
ESCAPES OFF
QUOTES OFF
DELIMITED BY '\x09'
ROW DELIMITED BY ','
go
(5 rows affected)
select * from VOD_K
go
telecastKey
-----------
123456
234567
345678
456789
567890
请记住,
DELIMITED BY '\x09'
子句是一个示例,我们只需要选择一个字符...ANY字符...数据文件中不存在;如果数据文件仅包含数字(0-9)和逗号(,),请尝试使用其他字符作为分隔符,例如:
LOAD TABLE VOD_K
(telecastKey)
FROM
'/tmp/data.txt'
STRIP OFF
ESCAPES OFF
QUOTES OFF
DELIMITED BY 'X' -- use single character 'X'
ROW DELIMITED BY ','
go
(5 rows affected)
select * from VOD_K
go
telecastKey
-----------
123456
234567
345678
456789
567890