【问题标题】:Not all rows getting loaded by using the fastload utility in Teradata from CSV file to a table from Teradata SQL assistant?不是所有的行都通过使用 Teradata 中的 fastload 实用程序从 CSV 文件加载到 Teradata SQL 助手的表中?
【发布时间】:2021-05-17 17:08:31
【问题描述】:

我正在练习在 teradata 中使用 Fastload/Multiload 实用程序来加载具有大约 1500000 条记录的样本信用卡数据。数据被加载到 49k 条记录中,并以错误“MaxErr49923”结束。我附上了加载实用程序屏幕截图以及错误日志文件以及我试图加载的示例平面文件(csv)。 日期字段(即签发日期和到期日期)也总是填充空值。这是我使用的空表查询。

DATABASE PRACTISE;
CREATE MULTISET TABLE CREDIT_CARD_RECORDS
(
Card_Type_Code VARCHAR(10),
Card_Type_Full_Name VARCHAR (30),
Issuing_Bank VARCHAR (30),
Card_Number BIGINT,
Card_Holders_Name VARCHAR(30),
CVV_CVV2 INT,
Issue_Date DATE FORMAT'DD-MM-YYYY',
Expiry_Date DATE FORMAT'DD-MM-YYYY',
Billing_Date INT,
Card_PIN INT,
Credit_Limit BIGINT
)
PRIMARY INDEX (Card_Holders_Name);

错误日志文件详细信息

  .......46703,"VI","Visa","Cabela?s WFB",4285413383016162,"Reita Dancy",834,"05/2017","05/2029",8,1210,170400
46783,"VI","Visa","Cabela?s WFB",4195838028015311,"Gregorio Q Holmberg",979,"01/2017","01/2023",17,0505,96000
46807,"VI","Visa","Cabela?s WFB",4872945616723659,"Wilson O Nichols",620,"10/2014","10/2026",7,2459,100800
46907,"VI","Visa","Cabela?s WFB",4059953506470345,"Grayce D Truelove",151,"12/2017","12/2029",5,6090,107200
46983,"VI","Visa","Cabela?s WFB",4243827234729130,"Hyman O Gonsalves",024,"05/2011","05/2029",10,9488,34100
47327,"VI","Visa","Cabela?s WFB",4029223115017839,"Royce A Rencher",828,"09/2013","09/2024",15,3963,82000
47429,"VI","Visa","Cabela?s WFB",4739490884291546,"Verda Z Tarbell",555,"09/2009","09/2023",27,3917,180900
47431,"VI","Visa","Cabela?s WFB",4807314635184999,"Rose Nall",467,"12/2011","12/2025",17,8725,51900
47605,"VI","Visa","Cabela?s WFB",4616137762819330,"Nikki H Ibarra",875,"11/2012","11/2023",3,0913,134100
47684,"VI","Visa","Cabela?s WFB",4324426783341637,"Edna Ford",462,"12/2009","12/2022",14,0751,196400
47708,"VI","Visa","Cabela?s WFB",4980702571860573,"Dale D Chapman",067,"09/2012","09/2020",20,9449,44800
47711,"VI","Visa","Cabela?s WFB",4188345979583668,"Darren L Parkes",833,"08/2010","08/2018",4,9342,183500
48402,"VI","Visa","Cabela?s WFB",4799378041834042,"Teresa P Delacruz",812,"05/2010","05/2020",13,4389,159600
48540,"VI","Visa","Cabela?s WFB",4515502653866231,"Jeanette W Richmond",228,"11/2010","11/2011",26,5042,17400
49042,"VI","Visa","Cabela?s WFB",4915603258686796,"Keith J Buckley",708,"10/2015","10/2030",15,3182,48100
49473,"VI","Visa","Cabela?s WFB",4771127111386777,"Merrill Vrooman",350,"10/2014","10/2016",6,4282,107700
49762,"VI","Visa","Cabela?s WFB",4242331801902791,"Herbert X Tate",971,"07/2007","07/2012",24,2696,13400
MaxErr49923,"VI","Visa","Cabela?s WFB",4703254908053528,"Jannette O Elsass",729,"03/2013","03/2022",19,8396,97400
RestartRowAt 50002

P.S 我知道我使用了 MULTISET 表属性,原因是我也需要尝试使用 Multiload。 我要加载的文件位于以下链接here

【问题讨论】:

  • 日期格式很明显不匹配
  • 修复了日期问题,但数据加载仍然在第 49k 行停止。
  • 当然希望那些是“假”帐户。日志中的字符串分隔符似乎是",但您的对话框显示'。对于日期,您似乎希望表定义中的列格式为 'mm/yyyy' 以匹配数据并取消选择“使用系统区域设置”,以便数据库进行转换。
  • 使用“加载了大约 1400k 记录但出现错误”做了同样的事情。感谢您的修复。日期问题已解决。而且帐户是假的,并且使用创建随机数据的算法生成。

标签: sql database teradata teradata-sql-assistant teradatasql


【解决方案1】:

我认为这是一个错误。我在 python 的最新版本的 Teradataml 包中发现了这个错误。他们将批号错误地设置为num_batches = int(df.shape[0]/batch_size)(Teradataml 版本 17.0.0.4 fastload.py 模块,第 467 行)。它应该是 num_batches = int(df.shape[0]/batch_size) + ((df.shape[0] % batch_size) > 0) 在 python 中,int 函数将向下舍入。因此,如果您的总行数不是批次大小的倍数,则不会加载最后一批。我不知道如何让他们知道,但这很明显是一个错误。一个快速的解决方法是让你的块大小或批量大小变大,这样所有的东西都将在一批中加载。这就是我现在解决问题的方法。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
  • "想知道如何让他们知道,但这显然是一个错误。" - 我将此信息转发给负责 teradataml 库的工程团队。谢谢!
【解决方案2】:

根据总行数和批量大小,teradataml 会将所有剩余的行添加到最后一批,然后加载这些行。这意味着最后一批的行数将少于批大小。 请提供有关您正在尝试的方案的更多信息。如果您可以提供正在执行的脚本/步骤,那就太好了。这将有助于工程团队最终重现问题并提供修复。

【讨论】:

    猜你喜欢
    • 2019-04-29
    • 2017-07-19
    • 2015-10-26
    • 1970-01-01
    • 2017-12-17
    • 2020-12-07
    • 2013-10-13
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多