簡體   English   中英

插入不同格式的數據庫條目

[英]Insert database entries in different format

我必須在新數據庫中填寫條目。 舊模式如下所示:

+------------------------+----------+------+-----+---------+----------------+
| Field                  | Type     | Null | Key | Default | Extra          |
+------------------------+----------+------+-----+---------+----------------+
| id                     | int(11)  | NO   | PRI | NULL    | auto_increment |
| trainee_id             | int(11)  | NO   | MUL | NULL    |                |
| date                   | date     | NO   |     | NULL    |                |
| duration               | int(11)  | NO   |     | NULL    |                |
| documentationReference | longtext | YES  |     | NULL    |                |
| educationDepartment    | longtext | YES  |     | NULL    |                |
| completedtasks         | longtext | NO   |     | NULL    |                |
| yearOfTraining         | int(1)   | YES  |     | NULL    |                |
+------------------------+----------+------+-----+---------+----------------+

所以現在我的插入語句看起來像這樣:

INSERT INTO `report_completedtask`
      VALUES (997,
              3,
             '2015-01-23',
             8,
             NULL,
             'Netzwerk und Sicherheit',
             'Berufsschule',
             1);

但是由於我的新架構如下所示:

+----------------------+----------+------+-----+---------+----------------+
| Field                | Type     | Null | Key | Default | Extra          |
+----------------------+----------+------+-----+---------+----------------+
| id                   | int(11)  | NO   | PRI | NULL    | auto_increment |
| trainee_id           | int(11)  | NO   | MUL | NULL    |                |
| task                 | longtext | NO   |     | NULL    |                |
| date                 | date     | NO   |     | NULL    |                |
| year_of_training     | int(11)  | NO   |     | NULL    |                |
| duration             | int(11)  | YES  |     | NULL    |                |
| documentation        | longtext | YES  |     | NULL    |                |
| education_department | longtext | YES  |     | NULL    |                |
+----------------------+----------+------+-----+---------+----------------+

我需要以下插入語句結構:

INSERT INTO `report_completedtask`
     VALUES (997,
             3,
             'Netzwerk und Sicherheit',
             '2015-01-23',
             1,
             8,
             NULL,
             'Berufsschule');

這是真正的問題 :我有一個巨大的文件,其中的舊條目有1000多行。 有什么辦法可以為新架構重新排列它們並更改文件?

編輯:我現在采用dan08的方法,並將其與簡單的vi命令結合:

:%s/VALUES/(id,trainee_id,date,duration,documentation,education_department,task,year_of_training) VALUES/g

有時候太簡單了:D

您是否知道可以指定要插入的列。

INSERT INTO my_table (col_a, col_c, col_b) VALUES ('a', 'c', 'b');

因此,我認為您需要做的就是明確指定要插入的列。 它們可以以任何順序排列,而不管表中的順序如何。

您也可以一次插入多行,如下所示:

INSERT INTO my_table (col_a, col_c, col_b) VALUES 
  ('a', 'c', 'b'), 
  ('b', 'c', 'a'), 
  ... , 
  ('b', 'a', 'c');

我不知道您的SGBD,但是使用oracle可以執行類似的操作:

INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1
WHERE tbl_temp1.fld_order_id > 100;

對於您的情況,我建議您在SGBD對其進行管理的情況下編寫塊PL / SQL。

如果您不想打擾代碼,還可以使用talend來讀取文件並插入數據!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM