22,209
社区成员
发帖
与我相关
我的任务
分享
SELECT * , convert(char(10),GetDate(),120) as Date INTO ttt1
FROM test07232
[/quote]
真的感谢,祝大神好人一生平安,约X成功 SELECT * , convert(char(10),GetDate(),120) as Date INTO ttt1
FROM test07232
CREATE TABLE test07232(id INT ,iq VARCHAR(300))
bulk insert test07232
from 'D:\2017-7-22.csv'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '0x0a'
)
SELECT * ,GETDATE() AS Date INTO ttt
FROM test07232
终于找到办法了,你用上面的办法试试,,前面的BULK INSERT 大概10s, select into 0 s 。如果你是服务器,IO 好些,应该可以在10s内完成。
服务器: 消息 4866,级别 17,状态 66,行 1
大容量插入失败。数据文件中第 1 行、第 1 列的列太长。请确保正确地指定了字段终止符和行终止符。
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'STREAM' 报错。提供程序未给出有关错误的任何信息。
OLE DB 错误跟踪[OLE/DB Provider 'STREAM' IRowset::GetNextRows returned 0x80004005: 提供程序未给出有关错误的任何信息。]。
语句已终止。
应该就是无法换行造成的
Create Table #TEST_IP(ID Int,IQ VarChar(255))
[/quote]
如果源csv的换行符无法获取,是不是就无法Bulk了?CREATE TABLE test07232(id INT ,iq VARCHAR(300))
bulk insert test07232
from 'D:\2017-7-22new.csv'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
insert into 目标表
SELECT * ,GETDATE() AS Date FROM test07232
你的csv要另存一下,我把另存的内容发给你了。
bulk insert 大概10s ,如果你是服务器肯定会快一些。[/quote]
感谢热心的大神
但是这个办法不行。打开再另存,再开始代码,这样耗时太多了
要10s内才可以啊[/quote]
之所以要另存为是因为你的csv换行符识别不到。你的csv是怎么来的,可以考虑从源头改变下[/quote]
源头不在控制范围啊,难道是这份csv无法bulk?CREATE TABLE test07232(id INT ,iq VARCHAR(300))
bulk insert test07232
from 'D:\2017-7-22new.csv'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
insert into 目标表
SELECT * ,GETDATE() AS Date FROM test07232
你的csv要另存一下,我把另存的内容发给你了。
bulk insert 大概10s ,如果你是服务器肯定会快一些。[/quote]
感谢热心的大神
但是这个办法不行。打开再另存,再开始代码,这样耗时太多了
要10s内才可以啊[/quote]
之所以要另存为是因为你的csv换行符识别不到。你的csv是怎么来的,可以考虑从源头改变下CREATE TABLE test07232(id INT ,iq VARCHAR(300))
bulk insert test07232
from 'D:\2017-7-22new.csv'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
insert into 目标表
SELECT * ,GETDATE() AS Date FROM test07232
你的csv要另存一下,我把另存的内容发给你了。
bulk insert 大概10s ,如果你是服务器肯定会快一些。[/quote]
感谢热心的大神
但是这个办法不行。打开再另存,再开始代码,这样耗时太多了
要10s内才可以啊CREATE TABLE test07232(id INT ,iq VARCHAR(300))
bulk insert test07232
from 'D:\2017-7-22new.csv'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
insert into 目标表
SELECT * ,GETDATE() AS Date FROM test07232
你的csv要另存一下,我把另存的内容发给你了。
bulk insert 大概10s ,如果你是服务器肯定会快一些。Create Table #TEST_IP(ID Int,IQ VarChar(255))
Create Table #TEST_IP(ID Int,IQ VarChar(255),Date DateTime)
然后bulk直接插入,就一直不行了
bcp tempdb.dbo.tt in e:\test.csv -c -Usa -P123456
bulk insert:
BULK INSERT tempdb.dbo.tt
FROM 'E:\test.csv';
然后再从临时表把数据插入到数据表中并加上时间
INSERT INTO 表
SELECT * ,
GETDATE()
FROM tempdb.dbo.tt
一般BULK INSERT比bcp要快CREATE TABLE test07231(id INT ,iq DECIMAL)
bulk insert test07231
from 'D:\test2.csv'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
insert into 目标表
SELECT * ,GETDATE() AS Date FROM test07231
就用bulk insert 吧,速度挺快的。例子如上,可以先导入到一个临时表中,然后用下面的查询语句插入的你实际想导入的表[/quote]
服务器: 消息 4866,级别 17,状态 66,行 1
大容量插入失败。数据文件中第 1 行、第 2 列的列太长。请确保正确地指定了字段终止符和行终止符。
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'STREAM' 报错。提供程序未给出有关错误的任何信息。
OLE DB 错误跟踪[OLE/DB Provider 'STREAM' IRowset::GetNextRows returned 0x80004005: 提供程序未给出有关错误的任何信息。]。
语句已终止。