Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bisakah mysql mengimpor file csv atau txt lainnya ke dalam satu kolom?

Ya, Anda dapat melakukannya dengan beberapa langkah:

Pertama Buat tabel staging sementara (sebut saja import ) dengan satu kolom yang akan menampung baris sebagai baris dari file data sumber

CREATE TABLE `import` (
  `line` varchar(512) DEFAULT NULL
);

dan memuat data dari file ke dalam tabel

LOAD DATA INFILE '/path/to/your/file.txt'
INTO TABLE import
FIELDS TERMINATED BY '\n'
LINES  TERMINATED BY '\n'

Kedua Dengan asumsi bahwa Anda memiliki tabel target (sebut saja words ) yang terlihat seperti ini

CREATE TABLE `words` (
  `word` varchar(64) DEFAULT NULL
);

kita dapat membagi setiap baris menjadi kata-kata dan memasukkannya ke dalam words tabel dengan kueri

INSERT INTO words (word)
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(line, ' ', n.n), ' ', -1) word
  FROM import CROSS JOIN 
(
   SELECT a.N + b.N * 10 + 1 n
     FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
   ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
    ORDER BY n
) n
 WHERE n.n <= 1 + (LENGTH(line) - LENGTH(REPLACE(line, ' ', '')))
 ORDER BY n.n

CATATAN:

  • asumsinya adalah kata-kata Anda dipisahkan persis dengan satu spasi
  • kueri ini akan dibagi hingga 100 kata. Jika Anda membutuhkan lebih atau kurang, Anda dapat menyesuaikan batas dengan mengedit subquery dalam atau jika melakukan impor secara teratur daripada mempertimbangkan untuk menggunakan tabel penghitungan (angka) yang bertahan sebagai gantinya.

Ketiga Jatuhkan atau potong (jika Anda akan menggunakannya lagi untuk mengimpor lebih banyak file) tabel pementasan

DROP TABLE import;

Ini SQLFiddle demo yang menunjukkan langkah kedua.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat memuat com.mysql.jdbc.Driver

  2. Menggunakan PHP MYSQLi cara mendapatkan hanya debitur dan hanya kreditur yang dikelola dengan action_type DR dan CR

  3. Cara Instal MySQL 8.0 di CentOS 8 / RHEL 8

  4. Indeks generasi hibernasi dan kunci asing dengan nama yang sama untuk MySQL

  5. Pembaruan tabel lengkap MySQL 17.6m baris (1,2 gb) terlalu lambat