【问题标题】:How to bulk import a CSV or a TXT file trough command into a Teradata database如何通过命令将 CSV 或 TXT 文件批量导入 Teradata 数据库
【发布时间】:2020-08-17 23:20:19
【问题描述】:

我在 SQL Server 中使用以下命令创建一个临时表,然后从 CSV 文件导入值,然后查阅所有这些值。

我正在寻找一种类似的方式来做这件事,但在 Teradata 数据库中。 任何导入向导工具对我来说都是不可能的选择。 我希望能够做到这一点,只需像使用 SQL Server 一样使用命令。

可以在 Teradata SQLAssistant 或 Toad Data Point 等编辑器工具中执行此操作吗?

  1. 创建表#Temporary ( 事件ID int, EventEnumDays int, 事件类型 int )

  2. BULK INSERT testdb.#temporary FROM 'C:\Users\MyUser\Desktop\bulkinsert.csv' WITH (FIELDTERMINATOR = ',');

  3. 从#temporary中选择*;

谢谢,任何帮助都非常感谢!

注意:我不能使用这些工具的导入向导功能,我需要使用这些工具的编辑器窗口编写一个像上面这样的查询来完成这个任务。有可能吗?

【问题讨论】:

  • 您说“任何导入向导工具都不是一个可能的选项”,但您提到了两个具有此类选项的 GUI 工具。您真正需要在“批处理”脚本中执行此操作吗? (在这种情况下,BTEQ 可能是一个不错的工具选择。)
  • 我无法使用这些工具的导入向导功能,我需要使用这些工具的编辑器窗口编写类似上述的查询来完成此任务。有可能吗?

标签: teradata bulkinsert toad teradata-sql-assistant


【解决方案1】:

在 Unix 上(命令行脚本):

bteq <<EOF
.LOGON ${server}/${usr},${pwd};

create table Temp_table ( EventID int, EventEnumDays int, EventType int );

.IMPORT REPORT FILE = /home/your_name/bulkinsert.csv

.REPEAT * 
 USING 
        EventId    (varchar(10))
        ,EventEnumDays   (varchar(10))
        ,EventType (varchar(10))

 INSERT INTO Temp_table
        VALUES (
        cast(:EventId as int),
        cast(:EventEnumDays as int),
        cast(:EventType as int)
        );
select * from Temp_table;
.QUIT
.LOGOFF

EOF

【讨论】:

  • 感谢您的回答。但我需要使用 Teradata SQL 助手或 Toad Data Point 的编辑器窗口编写类似上述的查询来完成此任务。有可能吗?
  • 这些工具都不允许您通过编辑器窗口中的命令指定源文件的位置。如果您使用 BTEQ(包括 Windows GUI BTEQwin),那么您可以使用类似于上述 Linux 的脚本。
猜你喜欢
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
相关资源
最近更新 更多